Android createTempFile prohibits rejecting permissions?

It is simple but not working. I am trying to create a temporary file (later a permanent storage file) for previewing an MP3 file. I tried the following suffix options in the following example:

public class StudyFileIo extends Activity { private static final String TAG = "StudyFileIo"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { File tempFooFile = File .createTempFile("foo", "dat"); Log.i(TAG, tempFooFile.getAbsolutePath()); } catch (IOException e) { Log.e(TAG, e.toString()); e.printStackTrace(); } } } 

Log:

 09-07 11:25:20.299 E/StudyFileIo( 8859): java.io.IOException: Permission denied 09-07 11:25:20.299 W/System.err( 8859): java.io.IOException: Permission denied 09-07 11:25:20.299 W/System.err( 8859): at java.io.File.createNewFileImpl(Native Method) 09-07 11:25:20.299 W/System.err( 8859): at java.io.File.createNewFile(File.java:1160) 09-07 11:25:20.299 W/System.err( 8859): at java.io.File.createTempFile(File.java:1224) 09-07 11:25:20.299 W/System.err( 8859): at java.io.File.createTempFile(File.java:1182) 09-07 11:25:20.299 W/System.err( 8859): at com.mobibob.studyfileio.StudyFileIo.onCreate(StudyFileIo.java:25) 09-07 11:25:20.299 W/System.err( 8859): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-07 11:25:20.299 W/System.err( 8859): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 09-07 11:25:20.309 W/System.err( 8859): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 09-07 11:25:20.309 W/System.err( 8859): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 09-07 11:25:20.309 W/System.err( 8859): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 09-07 11:25:20.309 W/System.err( 8859): at android.os.Handler.dispatchMessage(Handler.java:99) 09-07 11:25:20.309 W/System.err( 8859): at android.os.Looper.loop(Looper.java:123) 09-07 11:25:20.309 W/System.err( 8859): at android.app.ActivityThread.main(ActivityThread.java:4627) 09-07 11:25:20.309 W/System.err( 8859): at java.lang.reflect.Method.invokeNative(Native Method) 09-07 11:25:20.309 W/System.err( 8859): at java.lang.reflect.Method.invoke(Method.java:521) 09-07 11:25:20.319 W/System.err( 8859): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876) 09-07 11:25:20.319 W/System.err( 8859): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) 09-07 11:25:20.319 W/System.err( 8859): at dalvik.system.NativeStart.main(Native Method) 

Is there any AndroidManifest.xml parameter that I am missing (I use the default manifest)?

+7
android file-io permissions permission-denied
source share
2 answers

You need to create temporary files in the directory to which your application belongs. You should use createTempFile(String prefix, String suffix, File directory) , where the directory is the location where the temp file should be written. You can get the correct location for the directory with the result Context.getFilesDir() or Context.getDir(String name, int mode) .

+10
source share

I think that you just missed the write permission in the external storage, as temporary files are created there by default. Add

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

to your manifest, and it should work.

+14
source share

All Articles