0

SMSログを作成しようとしましたが、デバイスから次のようなエラーメッセージが送信されました

07-18 10:11:33.956: E/One(1320): Could not write file /sdcard/log.txt (Permission denied)

ファイルを書き込む私のコード

File root = Environment.getExternalStorageDirectory();
try 
{
    BufferedWriter fw = new BufferedWriter(new FileWriter(new File("/sdcard/log.txt"), true));
    if (root.canWrite()) 
    {
        fw.newLine();
        fw.write("----+ Monitoring SMS +----" + "\n");
        fw.write("- Pesan Masuk "+ "\n");
        fw.write(logSMS + "\n");
        fw.write("          ----+||+----" + "\n");
        fw.newLine();
        fw.close();
    } 
} catch (IOException e) {
    Log.e("One", "Could not write file " + e.getMessage());
}   

私のアプリのマニフェスト許可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CALENDAR"></uses-permission>
<uses-permission android:name="android.permission.READ_CALENDAR"></uses-permission>

エラーが見つかりません、助けてください

4

3 に答える 3

1

SDCard のルートに書き込むことはできません。SDCard にフォルダを作成し、そこに書き込みます。

http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory ()

于 2012-07-24T03:21:19.467 に答える
1

一部のデバイスでは、sdcard がルート ディレクトリにありません。

あなたがしたいのは、そこにSDカードがありますが、それを使用していないものと交換"/sdcard/log.txt"するroot + "/log.txt"ことです。

于 2012-07-24T02:31:17.063 に答える
0

交換してみていただけますか

BufferedWriter fw = new BufferedWriter(new FileWriter(new File("/sdcard/log.txt"), true));

BufferedWriter fw = new BufferedWriter(new FileWriter(new File(root.getAbsolutePath() + "/log.txt"), true));

これは、コードがシステムに割り当てられた外部ストレージ パスに書き込んでいることを確認するためです。デバイスによって異なるためです。

于 2012-07-24T04:37:56.063 に答える