Пример использования QML-модуля Share
Для того, чтобы приложение могло быть отображено в диалоге Поделиться,
необходимо в desktop-файл добавить описания методов обмена данными.
Каждый метод должен быть указан в поле X-Share-Methods
и иметь свой собственный раздел [X-Share Method …] в desktop-файле.
Название блока [X-Share Method …] должно соответствовать названию в X-Share-Methods.
Например, строке X-Share-Methods=images; соотвествует раздел [X-Share Method images].
В блоке [X-Share Method …] в поле Capabilities указывается один или несколько mime-типов.
Несколько типов указываются через ";".
Примеры:
Capabilities=image/*
Capabilities=image/;video/
Краткое описание метода совместного доступа,
которое будет отображаться в диалоговом окне Поделиться,
можно указать в строке Description= блока [X-Share Method …].
Например: Description=Image share demo.
Описание может быть переведено на другие языки с помощью указания локали,
например, [ru_RU] для русского языка.
Пример перевода: Description[ru]=Демо обмена изображениями.
По умолчанию используется не локализованная версия из строки Description=.
Если приложение обрабатывает список файлов,
необходимо в блоке [X-Share Method …] указать флаг SupportsMultipleFiles=yes.
Также этот флаг влияет на то, будет ли отображаться приложение в списке диалога Поделиться,
если пользователь хочет поделиться группой файлов.
Пример desktop-файла:
[Desktop Entry]
Type=Application
X-Nemo-Application-Type=silica-qt5
Icon=ru.auroraos.ShareDemo
Exec=/usr/bin/ru.auroraos.ShareDemo
Name=Share Demo
Name[ru]=Демо обмена
X-Share-Methods=images;
X-Maemo-Service=ru.auroraos.ShareDemo
X-Maemo-Method=ru.auroraos.ShareDemo.activateWindow
[X-Application]
Permissions=UserDirs
OrganizationName=ru.auroraos
ApplicationName=ShareDemo
ExecDBus=/usr/bin/org.ShareDemo --dbus-launch
[X-Share Method images]
Description=Image share demo
Description[ru]=Демо обмена изображениями
Capabilities=image/*
SupportsMultipleFiles=yes
Список зарегистрированных провайдеров для Share: /var/lib/sailfish-share/desktopfiles.list.
Ключ ExecDBus используется для указания команды запуска приложения при запросе к соответствующей службе D-Bus.
Дополнительный аргумент --dbus-launch позволяет определить, что запуск происходил именно через D-Bus.
Совместно с ключом ExecDBus используются ключи X-Maemo-Service и X-Maemo-Method,
содержащие соответственно название службы и метод, вызываемый при обращении к службе.
Если данные ключи не будут указаны, произойдёт ошибка активации окна, выраженная следующим образом. При первом запуске приложения окно не будет создано, а также не произойдёт вызов совместного доступа. При повторном запуске приложение не будет запущено из-за наличия работающего экземпляра приложения в фоновом режиме (без окна активации).
В функции main необходимо зарегистрировать службу D-Bus,
которая будет использоваться для активации приложения:
int main(int argc, char *argv[])
{
    QScopedPointer<QGuiApplication> application(SailfishApp::application(argc, argv));
    application->setOrganizationName(QStringLiteral("ru.auroraos"));
    application->setApplicationName(QStringLiteral("ShareDemo"));
    QScopedPointer<QQuickView> view(SailfishApp::createView());
    view->setSource(SailfishApp::pathTo(QStringLiteral("qml/ShareDemo.qml")));
    if (!application.arguments().contains("--dbus-launch"))
        view->show();
    QDBusConnection::sessionBus().registerService("ru.auroraos.ShareDemo");
    return application->exec();
}
В ApplicationWindow для каждого X-Share Method
необходимо добавить соответствующий ShareProvider:
ApplicationWindow {
    id: applicationWindow
    initialPage: Component { ImagesPage { model: imagesModel } }
    cover: Qt.resolvedUrl("cover/DefaultCoverPage.qml")
    allowedOrientations: defaultAllowedOrientations
    ListModel { id: imagesModel }
    ShareProvider {
        method: "images"
        capabilities: ["image/*"]
        onTriggered: {
            imagesModel.clear()
            for (var iResource = 0; iResource < resources.length; ++iResource)
                imagesModel.append({ "filePath": resources[iResource].filePath })
            applicationWindow.activate()
        }
    }
}