android createTempFile抛出权限被拒绝?

这很简单,但不起作用。 我正在尝试创build一个临时文件(稍后是一个永久存储文件)预览MP3文件。 我已经尝试了以下示例的后缀变体:

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

日志:

 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) 

有一些AndroidManifest.xml设置,我缺less(我使用默认清单)?

Solutions Collecting From Web of "android createTempFile抛出权限被拒绝?"

您需要在您的应用程序拥有的目录中创build临时文件。 您应该使用createTempFile(String prefix, String suffix, File directory) ,其中目录是要写入临时文件的位置。 您可以通过Context.getFilesDir()Context.getDir(String name, int mode)获得目录的有效位置。

我认为你只是错过了在外部存储上写入的权限,因为临时文件是在默认情况下创build的。 加

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

你的清单,它应该工作。