![通过内容中心导出图片时出错](https://linux22.com/image/860108/%E9%80%9A%E8%BF%87%E5%86%85%E5%AE%B9%E4%B8%AD%E5%BF%83%E5%AF%BC%E5%87%BA%E5%9B%BE%E7%89%87%E6%97%B6%E5%87%BA%E9%94%99.png)
我正在编写一款应用,并尝试将内容中心整合到其中。
我的应用会下载各种文件格式,因此我希望能够将图片、视频和其他类型的内容导出到其他应用。
我关注了本内容中心指南但发现它缺少导出内容的示例。
无论如何,当我尝试导出任何内容时,传输的状态总是立即变为“中止”,我不知道为什么。
这是我的 OpenContentPopup 组件:
PopupBase {
id: root
property var activeTransfer
property var items: []
property alias contentType: peerPicker.contentType
Connections {
target: activeTransfer
onStateChanged: {
console.log("Transfer state changed to " + activeTransfer.state)
}
}
ContentPeerPicker {
id: peerPicker
handler: ContentHandler.Destination
onPeerSelected: {
for (var i = 0; i < items.length; i++) {
console.log("Sharing item with name: " + items[i].name + ", url: " + items[i].url)
}
activeTransfer = peer.request()
activeTransfer.items = root.items
activeTransfer.state = ContentTransfer.Charged
PopupUtils.close(root)
}
onCancelPressed: {
PopupUtils.close(root)
}
}
}
当我尝试导出图像时,ContentPeerPicker 会让我选择打开 Gallery 应用程序,但当我选择 Gallery 应用程序时,Gallery 应用程序并未打开,并且传输状态似乎已中止(或 5..)。
代码示例中的日志显示:
<debug> Sharing item with name: name, url: file:///home/phablet/.local/share/com.nogzatalz.downow/download/Cover.jpg
<debug> Transfer state changed to 5
清单.json:
{
"name": "com.nogzatalz.downow",
"description": "Torrent downloading app",
"framework": "ubuntu-sdk-14.10-qml-dev3",
"architecture": "armhf",
"title": "DowNow",
"hooks": {
"downow": {
"desktop": "downow.desktop",
"apparmor": "apparmor.json",
"urls": "urldispatcher.json",
"content-hub": "content-hub.json"
}
},
"version": "0.1.28",
"maintainer": "DowNow Support <[email protected]>"
}
内容中心.json:
{
"source": [
"pictures",
"videos"
]
}
apparmor.json:
{
"policy_groups": [
"networking",
"content_exchange",
"content_exchange_source",
"audio"
],
"policy_version": 1.2
}
我真的认为我们需要更好的错误消息。
任何帮助都值得感激!
谢谢,Tal
答案1
我认为问题在于您在传输完成之前尝试充电。请看以下示例:
http://bazaar.launchpad.net/~ken-vandine/+junk/hub-exporter/view/head:/hub-exporter.qml#L426
答案2
显然我分享的代码是正确的。
在我的主要功能中,我有:
setenv("APP_ID", "com.nogzatalz.downow", /*overwrite*/ true);
我猜那搞乱了应用程序装甲。
我把它放在那里只是因为我曾经收到关于未设置 APP_ID 或其他的错误。
无论如何,感谢大家的帮助!=)