好吧,這不完全是一個問題,因爲我並沒有真正「困擾」我的代碼,但我發現Android API有關訪問外部存儲和File.createTempFile()方法的一些奇怪行爲,以及我想了解發生了什麼...什麼是在Android上創建臨時文件的最佳方式?
請注意,我的清單不包含包括<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
。
第1部分:
我有下面的代碼確實工作的魅力:
File tempFile = new File(Environment.getExternalStorageDirectory(),
"my_temp_file.png");
它會創建一個臨時文件給我,我可以寫DATAS在它沒有任何麻煩。
問題1:爲什麼它能工作,因爲我不應該在我的SD卡上擁有寫權限?
第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:爲什麼這不起作用,而恕我直言,它應注意什麼?
你仔細檢查過嗎? –
是絕對:)兩種情況下 –
你使用哪個android api?我相信如果將api設置爲4級,那麼某些權限不會被強制執行 – tomi