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)?

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.

  • Obtener la dirección de correo electrónico del propietario de Android muy bien
  • La aplicación para Android no se muestra en Google Android Market para tablets
  • ¿Puedo incluir el nombre del permiso en la cadena res
  • RecoverySystem.installPackage - / cache / recovery / command: open failed: EACCESS (permiso denegado) - falta de permiso después de actualizar Android a 4.3+
  • Permisos de android contra permisos de linux
  • Más permisos en apk cargado que en archivo de manifiesto
  • ¿Cómo se puede comprobar el permiso en tiempo de ejecución sin lanzar SecurityException?
  • StartBluetoothSco () lanza la excepción de seguridad (BROADCAST_STICKY) en ICS
  • Cómo compilar la aplicación de Android con permisos del sistema
  • Determinar la lista de permisos utilizados por una aplicación instalada en Android
  • Determinar mediante programación si la aplicación de Android tiene permiso al nivel del sistema
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.