2017-11-13 3 views
0

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.

Antwort

0

Entschuldigen Sie sich für die lange Post. Herausgefunden.

musste den .mkdirs() Aufruf (nicht .mkdir()) nach Angabe der Datei zu deklarieren.