0

我尝试制作短信日志,但我的设备发送这样的错误消息

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/log.txt"root + "/log.txt"有SD卡但你不使用它。

于 2012-07-24T02:31:17.063 回答
1

您不能写入 SDCard 的根目录。在您的 SDCard 上创建一个文件夹,然后写入该文件夹。

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

于 2012-07-24T03:21:19.467 回答
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 回答