android createTempFile 抛出权限被拒绝? [英] android createTempFile throws permission denied?

查看:82
本文介绍了android createTempFile 抛出权限被拒绝?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

This is simple, but not working. I am trying to create a temp file (later a permanent storage file) for preview of an MP3 file. I have tried the following variants of the suffix as 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();
        }

    }
}

日志:

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 设置(我使用的是默认清单)?

Is there some AndroidManifest.xml setting that I am missing (I am using default manifest)?

推荐答案

您需要在应用程序拥有的目录中创建临时文件.你应该使用 createTempFile(String prefix, String suffix, File directory),其中directory是临时文件所在的位置书面.您可以获得 directory 的有效位置,结果来自 Context.getFilesDir()Context.getDir(String name, int mode).

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

这篇关于android createTempFile 抛出权限被拒绝?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆