2017-11-13 22 views
0

私はAndroid Studioで作業中のプロジェクトに問題があります。基本的な文字列を.csvファイルに保存し、そのファイルを電子メールの添付ファイルとして添付することが目標です。リンクエラー - 書き込み許可なし

ファイルに書き込むことはできませんが、FileProvider.getUriForFile経由でファイルを共有できます。私は問題がstreamsavvy-1は私のパッケージ名紀元前懸念される私が得るこれらの二つのリンカエラーメッセージ、とは何かを持っていると思う

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 10286から10286/com.team6.rifflegroup.streamsavvy E /リンカ:警告:ライブラリのrealpathを取得できません "/data/app/com.team6.rifflegroup.streamsavvy-1/oat/arm64/base.odex"指定された名前を使用します。

は、私は私の書き込み機能は、この

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> 

のように見える解像度の下にxmlディレクトリ内paths.xmlファイルを持っているこの

File dataPath = new File(this.getFilesDir(), "xml"); 
File newData = new File(dataPath, FILE_NAME); 

のようなファイルを作成します

私のメールの意図は次のようになります

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...")); 

私は、これはJavaがそのプロジェクトをビルドしますが、私は非常にないです方法に問題であるように私は感じ

<?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> 

ここで私のマニフェストに許可を与えますプロセスに精通している。どのような助けや指針をいただければ幸いです。

投稿がここに初めて投稿されました。投稿が文脈に合っていないか、不適切な形式になっていると大変申し訳ございません。

答えて

0

長い投稿をお詫び申し上げます。理解した。

は、ファイルを指定した後に.mkdirs()コール(.mkdir()ではない)を宣言しなければなりませんでした。

関連する問題