Ich habe ein Problem mit einem Projekt, an dem ich in Android Studio arbeite. Das Ziel besteht darin, eine Basiszeichenfolge in einer CSV-Datei zu speichern und diese Datei dann als E-Mail-Anhang anzuhängen.Verbindungsfehler - Keine Schreibberechtigung
Ich kann nicht in die Datei schreiben, aber ich kann die Datei über FileProvider.getUriForFile freigeben.
Ich denke, das Problem etwas mit diesen beiden Linkerfehlermeldungen erhalte ich zu tun, die streamsavvy-1
wird über bc mein Paketname wird com.team6.rifflegroup.streamsavvy
11-13 16:20:39.775 10286-10286/com.team6.rifflegroup.streamsavvy E/linker: readlink('') failed: No such file or directory [fd=31]
11-13 16: 20: 39,775 10.286-10.286/com.team6.rifflegroup.streamsavvy E/Linker: Warnung: Realpfad konnte nicht für die Bibliothek "/data/app/com.team6.rifflegroup.streamsavvy-1/oat/arm64/base.odex" abgerufen werden. Wird den Vornamen verwenden.
baue ich die Datei wie diese
File dataPath = new File(this.getFilesDir(), "xml");
File newData = new File(dataPath, FILE_NAME);
Ich habe eine paths.xml
Datei in einem XML-Verzeichnis unter res, die ähnliche Funktion wie diese
try {
FileWriter writer = new FileWriter(newData);
writer.append(csv);
writer.flush();
writer.close();
Toast.makeText(this, "SAVED", Toast.LENGTH_SHORT).show();
}catch (IOException e){
e.printStackTrace();
}
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path
name="my_files"
path="/"/>
</paths>
meine Schreib sieht aussieht
Meine E-Mail-Absicht sieht so aus
Uri contentUri = FileProvider.getUriForFile(this, "com.team6.rifflegroup.streamsavvy.FileProvider", newData);
this.grantUriPermission(getPackageName(), contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.setType("vnd.android.cursor.dir/email");
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, "File Attached");
emailIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
Ich gebe Erlaubnis in meinem Manifest hier
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".dataLayout">
<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.team6.rifflegroup.streamsavvy.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths"/>
</provider>
</application>
ich so das Gefühl, ein Problem mit der Art und Weise java seine Projekte baut aber ich bin nicht sehr vertraut mit dem Prozess. Jede Hilfe oder Hinweise würden sehr geschätzt werden.
Dies ist mein erstes Mal hier, so dass es mir tut mir leid, wenn mein Beitrag nicht im Zusammenhang oder falsch formatiert ist.