Как сделать 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()).

см. Также учебное пособие по обмену файлами.