android createTempFile jette autorisation refusée?
C'est simple, mais pas de travail. Je suis en train de créer un fichier temporaire (plus tard, un stockage permanent de fichier) pour la prévisualisation d'un fichier MP3. J'ai essayé les variantes suivantes du suffixe comme l'exemple suivant:
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();
}
}
}
Journal:
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)
Est-il une AndroidManifest.xml paramètre qui me manque (je suis en utilisant par défaut le manifeste)?
OriginalL'auteur mobibob | 2010-09-07
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour créer des fichiers temporaires dans un répertoire de votre application possède. Vous devez utiliser
createTempFile(String prefix, Chaîne de suffixe, répertoire du Fichier)
, où répertoire est l'emplacement où le fichier temp est d'être écrite. Vous pouvez obtenir un emplacement valide pour répertoire avec le résultat deContexte.getFilesDir()
ouContexte.getDir(String nom, int mode)
.OriginalL'auteur Marc Bernstein
Je pense que tu viens de manquer la permission d'écrire à la de stockage externe, puisque les fichiers temporaires sont créés par défaut.
Ajouter
à votre manifeste et cela devrait fonctionner.
N'a pas fonctionné pour moi.
Selon le Android docs, vous avez encore besoin de cette autorisation dans la version 18 et ci-dessous.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
OriginalL'auteur Gonzalo