Как передать временно предоставленные разрешения ContentProvider в Сервис? - PullRequest
0 голосов
/ 15 мая 2019

Я написал Activity, которая должна иметь возможность получать файлы, передаваемые из сторонних приложений.Сама деятельность получила Сервис, который должен уметь читать эти файлы.Я определил intent-filter для активности.Я читаю URI с первого намерения, поступающего из стороннего приложения, и пересылаю URI в мой Сервис через мой «workintent».

Проблема в том, что я получаю исключение SecurityException при попытке прочитать файл в моей службе:

java.lang.SecurityException: Permission Denial: reading com.whatsapp.MediaProvider uri content://com.whatsapp.provider.media/item/397213 from pid=16463, uid=10337 requires the provider be exported, or grantUriPermission()

Чтение файла в моей деятельности работает нормально.Поэтому я полагаю, что сторонний поставщик контента предоставляет временное разрешение на чтение моей Деятельности как , описанное здесь , но это разрешение недействительно для моей Службы, потому что Служба - это другой компонент приложения .

Есть ли способ передать временно предоставленное разрешение от стороннего приложения для моей деятельности моей службе?

Я уже использую эти флаги для своей службы, но это не сработалоworkIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

Это полная диаграмма того, что происходит в моем желаемом сценарии использования: this is the full diagram of what's happening in my desired use case

...