Я работаю над созданием базового приложения для проводника файлов на Android, и я зациклился на том, как заставить FileProvider работать, чтобы я мог разрешить моему приложению доступ к другим файловым зонам, чем только базовые выделения Android-грантов вы по умолчанию.Рабочий пример FileProvider для Android
Я попытался следовать инструкциям, которые я читал (https://developer.android.com/training/secure-file-sharing/setup-sharing.html и еще нескольким другим), но я в недоумении, в частности проблема заключается в том, что мои @ xml/filepaths не регистрируются в моей Я обнаружил ошибку: «Элемент верхнего уровня не завершен».
Вот мой манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.hacktivity.datatemple">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="org.hacktivity.datatemple.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
И в моем файле Рез/XML/filepaths.xml, я следующее:
<paths>
<external-path path="/" name="root" />
</paths>
Ошибка с «<» была здесь, а не в коде моего проекта. –
Если нет FileProvider, то что позволяет мне получить доступ к остальной файловой системе в Android, как и другие приложения, которые я использовал? –
@GraffitiPlum: Я не знаю, что вы считаете «остальной файловой системой в Android». Вы не можете получить доступ к произвольным расположениям файловой системы, за исключением случаев, когда вы работаете на корневом устройстве. Вы можете изучить [внешнее хранилище] (https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html), выполнив разрешения READ_EXTERNAL_STORAGE или WRITE_EXTERNAL_STORAGE (включая запрос их во время выполнения). – CommonsWare