Der Content-Hub - Tipps und Tricks

../../_images/01.png

Content Hub: Teilen-Seite

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)

../../_images/12.svg

Importieren

../../_images/02.png

Webapp Ersteller im OpenStore

Looking into the code of Webapp Creator, we’ll find the code to import an image to be used as icon. Tapping on the place holder will open the Content Hub that will let us choose from where to import the image (see the Webapp Creator source code)

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

../../_images/04.png

Gelek im OpenStore

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).

../../_images/05.png

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).

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.

Teilen

Similarly, tapping on the share icon will allow us to send the saved game through Telegram to ourselves (see the Webapp Creator Import Page source code). Sharing is similar to exporting, except the destination app may share the content externally (for example, over Telegram or text message).

ContentPeerPicker {
    anchors { fill: parent; topMargin: picker.header.height }
    visible: parent.visible
    showTitle: false
    contentType: picker.contentType //ContentType.Pictures
    handler: picker.handler //ContentHandler.Source

    onPeerSelected: {

Der einzige Unterschied zwischen diesem und dem vorherigen Code besteht darin, dass handler jetzt ContentHandler.Share ist.

Warte einen Moment. Warum die verschiedenen Apps?

../../_images/08.png

Content Hub: Exportieren vs. Teilen

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"
    ]
}

So, with this example, uMatriks will be able to be the destination, source and share app for all kinds of ContentType. What about the other hooks in the manifest.json? That is discussed in the next guide.