Обработка временного Uri без активности пользовательского интерфейса - PullRequest
0 голосов
/ 03 октября 2018

Мое приложение обрабатывает Uri, доступный пользователю (зарегистрированный в intent.action.SEND и intent.action.SEND_MULTIPLE)
Я разрешаю и отправляю эти файлы, используя TCP, но я хочу сделать это полностью в фоновом режиме.

Как некоторые Uri работают нормально, я попытался поделиться фотографией из Google Photos и получил исключение Permission Daniel, так как моя деятельность была прервана до того, как я закончил обработку данных Uri.

Я пытался запустить службу, думая, что разрешение Uri может быть «сохранено», но я предполагаю, что это не так.
Есть ли способ обработать Uri без отображения активности пользовательского интерфейса блокировки?

1 Ответ

0 голосов
/ 03 октября 2018

Я хочу сделать это полностью на заднем плане.

ACTION_SEND и ACTION_SEND_MULTIPLE - действия действия.У вас нет выбора, кроме как заниматься деятельностью, которая их обрабатывает.Вы можете использовать это действие, используя Theme.Translucent.NoTitleBar, чтобы быть «невидимым» действием, но оно все еще там и все еще выходит на передний план.Обычно такое действие делает что-то короткое в onCreate(), например, запускает фоновую работу и показывает Toast, затем использует finish(), чтобы уйти.

Я пытался начатьслужба думает, что разрешение Uri может быть «сохранено», но я думаю, что это не

Добавьте FLAG_GRANT_READ_URI_PERMISSION на Intent, который вы используете для запуска службы, и поместите Uri в«data» аспект Intent:

new Intent(this, YourServiceClass.class)
  .setData(yourUri)
  .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)

Затем получите Uri в службе, позвонив getData() на Intent.Флаг передаст разрешение на чтение операции службе, которая затем сможет использовать ContentResolver и openInputStream() для чтения содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...