好吧,这不完全是一个问题,因为我并没有真正“卡住”我的代码,但我发现 Android API 在访问外部存储和 File.createTempFile() 方法方面有一些奇怪的行为,而且我想了解发生了什么...
请注意,我的清单不包括<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
.
第1部分 :
我有以下代码可以作为一个魅力:
File tempFile = new File(Environment.getExternalStorageDirectory(),
"my_temp_file.png");
它为我创建了一个临时文件,我可以毫无困难地在其中写入数据。
问题 1:为什么它会起作用,因为我不应该在我的 SDCard 上拥有写入权限?
第2部分 :
我试图更改我的代码以使用createTempFile
创建临时文件的官方方法。所以我试过:
File tempFile = File.createTempFile("my_temp", "png",
Environment.getExternalStorageDirectory());
并在我的 manifest.xml 中添加了WRITE_EXTERNAL_STORAGE 。你猜怎么了 ?这不起作用,我得到一个java.io.IOException
:
09-07 14:07:29.061: E/_CLOG(19982): java.io.IOException: Permission denied
09-07 14:07:29.061: E/_CLOG(19982): at java.io.File.createNewFileImpl(Native Method)
09-07 14:07:29.061: E/_CLOG(19982): at java.io.File.createNewFile(File.java:1257)
09-07 14:07:29.061: E/_CLOG(19982): at java.io.File.createTempFile(File.java:1322)
09-07 14:07:29.061: E/_CLOG(19982): at com.(...).onClick(ProfileImageUpdater.java:58)
问题2:为什么这不起作用,而恕我直言它应该?