Ich möchte Dateien zwischen meinen Anwendungen freigeben. Ich habe versucht, den Dateianbieter zu verwenden, aber es hat nicht funktioniert.Freigabe des internen Speichers mit FileProvider
First In meiner Stecker app, ich habe eine Datei Provider eingerichtet:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mdl.test.plug">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".ModuleActivity"
android:label="@string/title_activity_module"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.mdl.test.plug.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
</application>
mein filepaths.xml:
<paths>
<files-path path="/" name="allfiles" />
</paths
Und In einer Core-Anwendung, habe ich versucht zu lese test.txt:
Uri uri = Uri.parse("content://com.mdl.test.plug.fileprovider/allfiles/test.txt");
InputStream is = null;
StringBuilder result = new StringBuilder();
try {
is = getApplicationContext().getContentResolver().openInputStream(uri);
BufferedReader r = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = r.readLine()) != null) {
result.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try { if (is != null) is.close(); } catch (IOException e) { }
}
aber es gibt einen Berechtigungsfehler:
Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord
Was ich will, ist Core-Dateien von Steckern statt Plug-Dateien senden Core lesen kann. Irgendeine Lösungsmöglichkeit?
Dank
Sie haben nicht angegeben, wo sich Ihre test.txt-Datei befindet. Bitte sagen Sie den vollständigen Pfad. Weiter sollten Sie getUriForFile() verwenden, um das URI einzurichten. – greenapps