Android createTempFile lanza permiso denegado?

Esto es simple, pero no funciona. Estoy intentando crear un archivo del temp (más adelante un archivo permanente del almacenaje) para la inspección previo de un archivo MP3. He intentado las siguientes variantes del sufijo como ejemplo siguiente:

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(); } } } 

Iniciar sesión:

 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) 

¿Hay alguna configuración de AndroidManifest.xml que me falta (estoy usando el manifiesto predeterminado)?

    2 Solutions collect form web for “Android createTempFile lanza permiso denegado?”

    Es necesario crear los archivos temporales en un directorio que posee su aplicación. Debe utilizar createTempFile(String prefix, String suffix, File directory) , donde directorio es la ubicación a la que se va a escribir el archivo temporal. Puede obtener una ubicación válida para directorio con el resultado de Context.getFilesDir() o Context.getDir(String name, int mode) .

    Pienso que usted apenas faltó el permiso para escribir en el almacenaje externo, puesto que los archivos del temp se crean allí por abandono. Añadir

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

    A su manifiesto y debe funcionar.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.