2016-04-25 12 views
0

テキストファイルを作成してテキストを挿入しようとしています。 私はマニフェストの権限を追加しました:ファイルを作成し、androidにテキストを挿入します

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

しかし、私は、ファイルを開いて、テストを挿入しよう:

int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); 

    if (permission != PackageManager.PERMISSION_GRANTED) { 
     // We don't have permission so prompt the user 

    } 
    File file = new File(Environment.getExternalStorageDirectory(), "myfile.txt"); 
    try { 

     FileOutputStream stream = new FileOutputStream(file); 
     stream.write("test".getBytes()); 
     stream.close(); 
    } catch (FileNotFoundException e) { 

     e.printStackTrace(); 

    } catch (IOException e) { 

     // TODO Auto-generated catch block 
     // FragmentTools.alertbox(getActivity(), "erreur d'écriture");; 
    } 

を私はこれらのエラーを持っている:

java.io.FileNotFoundException: /storage/1B0C-330F/monfichier.txt: open failed: EACCES (Permission denied) 

答えて

0

あなたがファイルを作成していますあなたが許可を得る前に、を返す必要があります。

if (permission != PackageManager.PERMISSION_GRANTED) { 
    // We don't have permission so prompt the user 
     return; // or prompt a message 
} 
0

した後は、

if (permission != PackageManager.PERMISSION_GRANTED) { 
     // We don't have permission so prompt the user 

    } 

正しいにユーザに促すていますか?あなたがGoogleからのこのサンプルを見てそれを行う方法がわからない場合は...そのコードを貼り付けていなかったので:

https://github.com/googlesamples/android-PermissionRequest

それは非常に役立ちます。

もう1つの注意:API 23以降(あなたのように見える)でアプリを実行している場合は、実行時にアクセス許可を要求する必要があります。もう一度、Googleのサンプルを参照して、それを行う方法を示します。

0

以下のコードを使用してテキストファイルを作成し、そのファイルにデータを挿入します。

それは働くと、ユーザによって付与されたか、されていないこの機能チェック許可を呼び出す前に

public void generateTxtOnSD(Context context) { 
    try { 
     File root = new File(Environment.getExternalStorageDirectory(), "Notes"); 
     if (!root.exists()) { 
      root.mkdirs(); 
     } 
     File gpxfile = new File(root, "YOUR FILE NAME"); 
     FileWriter writer = new FileWriter(gpxfile); 
     writer.append("CONTENT TO INSERT"); 
     writer.flush(); 
     writer.close(); 
     Toast.makeText(context, "Txt Saved", Toast.LENGTH_SHORT).show(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

をテストしています。そのために

、使用PermissionAcceptorlibrary

0

最後に、それは、このコードで動作します:

private void save(String string) { 
    Activity act = getActivity(); 
    try { 
     FileOutputStream stream = act.openFileOutput("myfile.txt", Context.MODE_PRIVATE); 
     stream.write(string.getBytes()); 
     stream.close(); 
    } catch (FileNotFoundException e) { 

     FragmentTools.alertbox(getActivity(), "file not found"); 
    } catch (IOException e) { 

     FragmentTools.alertbox(getActivity(), "can't write "); 
    } 

} 
関連する問題