Документация
ОС Аврора 5.0.1

QML-тип ShareProvider

Принимает файлы и оповещает о передаче данных другим приложением. Подробнее…

Строка импорта: import Sailfish.Share 1.0

Свойства

Сигналы

Подробное описание

Принимает отправленные файлы и с помощью ShareProvider::triggered оповещает о передаче данных другим приложением.

Для реализации обмена данными с приложением необходимо использовать данный элемент. Следует определить метод отправки в desktop-файле. Например:

[Desktop Entry]
Type=Application
Name=My application
Icon=my-application
Exec=my-application
X-Share-Methods=images;

[X-Application]
ApplicationName=MyApplication
OrganizationName=org.example
Permissions=Internet;UserDirs;RemovableMedia

[X-Share Method images]
Description=Send to friends
Capabilities=images/png;images/jpeg
SupportsMultipleFiles=yes

Изменения, которые необходимо внести в приложение, — это определение методов отправки и добавление их списка.

В разделе X-Application необходимо определить соответствующие разрешения для приложения, зависящие от расположения ожидаемых файлов. Общие для всех приложений файлы хранятся на устройстве в каталогах, определённых разрешением UserDirs либо одним из более конкретных разрешений каталогов. Таким же образом с помощью разрешения RemovableMedia могут быть доступны файлы, хранящиеся на карте памяти. Если принимающее приложение не имеет доступа к файлу отправляющего приложения, передача файла не гарантируется.

Метод отправки должен быть указан в ключе X-Share-Methods и иметь свой собственный раздел. В последующем в диалоговом окне будет отображаться информация в виде краткого описания метода отправки. Локализация осуществляется с помощью ключей в desktop-файле. Например, Description[ru] будет определять русскоязычную версию Description, которая загружается, когда на устройстве установлен русский язык. Если подходящая переведённая версия не может быть найдена, по умолчанию используется нелокализованная версия.

Необходимо обработать регистрацию имени D-Bus на сеансовой шине в приложении. Чтобы действия выполнялись последовательно, необходимо использовать средства C++. Во избежание состояния «гонки» при регистрации объектов на D-Bus не следует использовать DBusInterface.

Пример:

 int main(int argc, char *argv[])
 {
     QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
     QScopedPointer<QQuickView> view(SailfishApp::createView());

     // ...

     view->setSource(SailfishApp::pathToMainQml());

     // После загрузки QML регистрируется сервис
     QDBusConnection::sessionBus().registerService("org.example.MyApplication");

     return app->exec();
 }

Можно поместить ShareProvider непосредственно под ApplicationWindow и определить в нём то же значение имени метода. Например:

 ApplicationWindow {
     id: root

     // ...

     ShareProvider {
         method: "images"
         capabilities: ["image/png", "image/jpeg"]

         onTriggered: {
             root.activate() // Показать окно
             // Передаёт ресурсы для обработки в коде. Диалоговое окно позволяет запросить 
             // у пользователя дополнительную информацию, прежде чем работать с данными.
             var dialog = pageStack.push("SendPicturesDialog.qml", { 'resources': resources })
         }
     }
 }

Можно зарегистрировать несколько методов отправки, определив несколько разделов X-Share Method и элементов ShareProvider. Необходимо использовать отличающиеся друг от друга имена методов для каждого раздела, после чего использовать те же имена в соответствующем компоненте QML.

Необходимо проверять все полученные ресурсы перед их использованием.

Описание свойств

capabilities : list

Список MIME-типов, которые принимает метод отправки.

Если требуется принудительно проверять получаемые MIME-типы при отправке, следует установить для этого параметра то же значение, что и для X-Share Method <method>/Capabilities. Например, если Capabilities — image/png;image/jpeg, то значением свойства будет [«image/png», «image/jpeg»].

Проверка MIME-типов не будет выполняться, если:

  • свойство не заполнено;
  • установлено значение undefined;
  • или один из типов имеет значение *.

Не следует доверять тому, что содержимое ресурса соответствует заявленному MIME-типу. Компонент только проверяет, соответствует ли получаемый MIME-тип установленному здесь значению capabilities.

См. также ShareAction::mimeType.

method : string

Имя метода отправки, определённое в desktop-файле.

Необходимо установить методу то значение, которое указано в списке X-Share-Methods и в имени раздела X-Share Method в desktop-файле приложения.

registerName : bool

Для автоматической регистрации имени на сессионной шине D-Bus, необходимо установить свойству значение true.

Это применимо только для простых случаев использования, т. е. когда в приложении имеется только один ShareProvider, и оно не предоставляет сервисы D-Bus для чего-либо ещё. В противном случае требуется зарегистрировать имя в C++ после загрузки компонентов ShareProvider.

Описание сигналов

triggered(list resources)

Данный сигнал испускается при использовании метода отправки.

Обработчиком сигнала является функция onTriggered. Аргумент представляет собой список ресурсов, которые были предоставлены приложению. Дополнительные сведения о ресурсах см. в разделе ShareResource.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.