Ich versuche, FileProvider zu verwenden, um eine SQL-Datenbankdatei per E-Mail zu teilen.Android: FileProvider "Fehler beim Suchen des konfigurierten Stammverzeichnisses"
Fehler:
java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.columbiawestengineering.columbiawest/databases/testresults.db
Mein Code:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="test_results" path="databases/"/>
</paths>
Manifest.xml:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.columbiawestengineering.columbiawest"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Java.code:
File goob = this.getDatabasePath("testresults.db");
Log.d("LOG PRINT SHARE DB", "File goob..? getDatabasePath.. here it is: " + goob.toString());
Uri contentUri = FileProvider.getUriForFile(this, "com.columbiawestengineering.columbiawest", goob);
Log.d("LOG PRINT SHARE DB", "contentUri got: here is contentUri: " + contentUri.toString());
Auch Logcat für Goob zeigt den korrekten db Standort:
....../com.columbiawestengineering.columbiawest D/LOG PRINT SHARE DB: File goob..? getDatabasePath.. here it is: /data/data/com.columbiawestengineering.columbiawest/databases/testresults.db
Hilfe?
Von developer.android scheint es, dass der XML-Dateien-Pfad ... das Unterverzeichnis files/darstellt. Aber das ist nicht der Ort, an dem die Datei gespeichert wird. Ich bin ratlos.
Dank CommonsWare, das ist, was ich hatte Angst vor ... Gibt es eine andere Weg zur Datenbankdatei? Ich kann es auf eine Zeichenkette drucken und die Zeichenkette emailen, aber ich versuche, die tatsächliche Datenbankdatei emailen. –
@DanLehto: ['getDatabasePath()' auf 'Context'] (http://developer.android.com/reference/android/content/Context.html#getDatabasePath (java.lang.String)) gibt Ihnen ein' Dateiobjekt, das auf Ihre Datenbank verweist. Sie können eine Kopie der Datei zu 'getFilesDir()' oder 'getCacheDir()' für die Zwecke von 'FileProvider' erstellen. Stellen Sie nur sicher, dass Ihre Datenbank zu diesem Zeitpunkt nicht verwendet wird. Oder ich werde in den nächsten Tagen ein Update auf [mein 'StreamProvider'] (https://github.com/commonsguy/cwac-provider) pushen, wo es möglich sein sollte, es zu erweitern, um die direkte Versorgung Ihrer Datenbank zu unterstützen . – CommonsWare