コードに「行き詰まっている」わけではないので、これは正確な質問ではありませんが、外部ストレージと File.createTempFile() メソッドへのアクセスに関する Android API の奇妙な動作を発見しました。何が起こっているのか理解したい...
私のマニフェストには<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 :なぜこれが機能しないのですか?