我尝试制作短信日志,但我的设备发送了这样的错误消息
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>
我找不到任何错误,请帮帮我
答案 0 :(得分:1)
在某些设备上,SD卡不在根目录中。
你想要做的就是用"/sdcard/log.txt"
代替root + "/log.txt"
,你有SD卡,但你没有使用它。
答案 1 :(得分:1)
您无法写入SD卡的根目录。在SDCard上创建一个文件夹,然后写入。
http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()
答案 2 :(得分: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));
这是为了确保您的代码正在写入系统分配的外部存储路径。因为它在不同的设备之间有所不同。