Как сделать FileProvider доступным для других приложений?
возможно ли иметь FileProvider, доступный для других приложений ?
манифест.в XML
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
android:exported="true"
android:grantUriPermissions="false"
android:permission="com.example.filesvisible.permission.READ" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filespath" />
</provider>
...
С doc:
false: поставщик недоступен для других приложений. Набор android: exported= "false", чтобы ограничить доступ к поставщику к вашему приложения. Только приложения с одинаковым идентификатором пользователя (UID) провайдер будет иметь к нему доступ.
Я попытался установить exported в правда, но у меня есть исключение.
Unable to get provider android.support.v4.content.FileProvider: java.lang.SecurityException: Provider must not be exported
почему я не могу экспортировать FileProvider ?
1 ответов
возможно ли иметь FileProvider, доступный для других приложений ?
да. Это обычно точка.
почему я не могу экспортировать FileProvider ?
потому что это не то, как вы используете FileProvider
.
за FileProvider
Это дать выберите доступ к файлам сторонних приложений. Вы можете сделать это с помощью FLAG_GRANT_READ_URI_PERMISSION
и/или FLAG_GRANT_WRITE_URI_PERMISSION
, в Intent
что вы используете для передачи одного изUri
значения для стороннего приложения (например, через ACTION_VIEW
Intent
используется с startActivity()
).
см. Также учебное пособие по обмену файлами.