Der Content-Hub - Tipps und Tricks#
In Ubuntu Touch sind alle Apps eingeschränkt. Um Dateien zwischen ihnen auszutauschen gibt es den Content-Hub, ein Teil des Betriebssystems der sich um Datei-Import, -Export und -Teilen kümmert.
Verschiedene Möglichkeiten um Inhalte zu teilen#
Wie wir in der Content Hub-Dokumentation sehen können, gibt es verschiedene Möglichkeiten, wie die Datei geteilt werden kann:
ContentHandler.Source
(Die ausgewählte App stellt eine zu importierende Datei bereit)ContentHandler.Destination
(Die ausgewählte App ist das Ziel der exportierten Datei)ContentHandler.Share
(Die ausgewählte App ist das Ziel der exportierten Datei, welche dann extern freigegeben wird)
Importieren#
Wenn wir uns den Code von Webapp Creator ansehen, finden wir den Code zum Importieren eines Bildes, das als Symbol verwendet werden soll. Wenn Sie auf den Platzhalter tippen, öffnet sich der Content Hub, über den wir auswählen können, woher das Bild importiert werden soll (siehe Quellcode des Webapp Creators <https://gitlab.com/cibersheep/webapp-creator/blob/master/webapp-creator/app/ImportPage.qml#L38>``_)
ContentPeerPicker {
anchors { fill: parent; topMargin: picker.header.height }
visible: parent.visible
showTitle: false
contentType: picker.contentType //ContentType.Pictures
handler: picker.handler //ContentHandler.Source
ContentPeerPicker
ist das Element, das die App zeigt.
var importPage = mainPageStack.push(Qt.resolvedUrl("ImportPage.qml"),{"contentType": ContentType.Pictures, "handler": ContentHandler.Source})
contentType
wird in Main.qml als ContentType.Pictures übergeben. Wir werden also nur Apps sehen, aus denen wir nur Bilder importieren können. handler
wird in der gleichen Zeile wie ContentHandler.Source übergeben. Da wir ein Bild aus der im Content Hub ausgewählten App importieren wollen.
Exportieren#
In Gelek werden wir mit einigen gespeicherten Spielen enden, die wir auf unserem Gerät speichern oder mit uns selbst teilen wollen (in Telegram und dann auf unserem Computer speichern).
Wenn Sie auf das Download-Symbol tippen, erhalten Sie einen Content Hub zum Speichern der Spieldatei (das eigentlich ein Export ist).
Die Spieldatei ist eine Datei vom Typ glksave
. Wir werden Content Hub mitteilen, dass wir eine Datei vom Typ Alle
senden (``Siehe den Code der Installationsseite <https://gitlab.com/cibersheep/gelek/blob/master/app/InstallPage.qml#L38>``_).
ContentPeerPicker {
anchors { fill: parent; topMargin: picker.header.height }
visible: parent.visible
showTitle: false
contentType: ContentType.All
handler: ContentHandler.Destination
onPeerSelected: {
contentType
ist ContentType.All
, daher werden wir nur Anwendungen sehen, die in der Lage sind, nicht markierte Dateitypen zu empfangen. handler
ist ContentHandler.Destination
, daher sollte die ausgewählte App das gespeicherte Spiel speichern.
Wenn wir auf den Dateimanager tippen, speichern wir das gespeicherte Spiel in dem von uns gewählten Ordner.
Warte einen Moment. Warum die verschiedenen Apps?#
Jeder Entwickler kann die Regeln festlegen, die jede App in Bezug auf den Content Hub befolgen würde. Warum wird der OpenStore als Ziel eines Exports angezeigt?
Schauen wir uns die manifest.json an
"hooks": {
"openstore": {
"apparmor": "openstore/openstore.apparmor",
"desktop": "openstore/openstore.desktop",
"urls": "openstore/openstore.url-dispatcher",
"content-hub": "openstore/openstore-contenthub.json"
}
},
Der obige Code definiert, dass die Hooks für die App mit dem Namen "openstore"`
in Bezug auf den "content-hub"`
die Regeln befolgen sollen, die in openstore-contenthub.json
definiert sind
{
"destination": [
"all"
]
}
Das bedeutet, dass der OpenStore das Ziel für alle ContentTypes
ist.
Was ist mit uMatriks? Betrachten wir das content-hub.json
{
"destination": [
"pictures",
"documents",
"videos",
"contacts",
"music"
],
"share": [
"pictures",
"documents",
"videos",
"contacts",
"music"
],
"source": [
"pictures",
"documents",
"videos",
"contacts",
"music"
]
}
Mit diesem Beispiel können uMatriks also das Ziel, die Quelle und die Freigabe der App für alle Arten von „ContentType“ sein. Was ist mit den anderen Haken in der manifest.json
? Das wird im nächsten Guide erläutert.