访问被拒绝错误InputStream ENOENT / EACCES尽管先检查权限

时间:2014-10-29 12:28:51

标签: java android eclipse

我正在尝试使用

读取.xyz文件
File file = new File(Environment.getExternalStorageDirectory(),"file.xyz");
InputStream is = getResources().getAssets().open("file.xyz");

此外,我使用以下代码检查我的访问权限:

String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        mExternalStorageAvailable = mExternalStorageWriteable = true;
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        mExternalStorageAvailable = true;
        mExternalStorageWriteable = false;
    } else {
        mExternalStorageAvailable = mExternalStorageWriteable = false;
    }
    System.out.println("EXTERNALSTORAGE_AVAILABLE = " + Boolean.toString(mExternalStorageAvailable));
    System.out.println("EXTERNALSTORAGE_WRITEABLE = " + Boolean.toString(mExternalStorageWriteable));

我得到两个布尔值FALSE。更奇怪的是,当我使用getPath()时,我得到/ mnt / sdcard。我有一个文件夹mnt但内部没有SD卡。我也使用ls -a来显示隐藏文件夹,但什么都没有。但是,当我使用File dir = new File(Environment.getExternalStorageDirectory()+"/"然后使用dir.exists()时,我会得到真的!?但它不起作用,我得到错误消息EACCES(虽然我进入文件夹mnt时看到文件夹sdcard或文件file.xyz ...所以我认为好吧然后让我把它放在我的Linux上的另一个目录中Debian系统(没有sudo权限btw)。所以我做了以下几点:

File file = new File("/folder1/folder2/.../","file.xyz");

但后来我清楚地看到了目录并将文件放入其中但我对dir.exists()得到了FALSE。错误是ENOENT。

此外我放了权限

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

进入我的AndroidManifest.xml。

顺便说一句(也许这很重要)何时使用

        if (android.os.Environment.getExternalStorageState().equals(
            android.os.Environment.MEDIA_MOUNTED))
    {
        System.out.println("STORAGESTATE equal MEDIA_MOUNTED");
    } else{
        System.out.println("STORAGESTATE NOT equal MEDIA_MOUNTED");
    }

我的STORAGESTATE不等于MEDIA_MOUNTED。

感谢您的帮助! 最好, BootTooth

0 个答案:

没有答案