具有系统权限的Android应用程序中的IOException

时间:2014-06-21 18:51:53

标签: android android-manifest ioexception android-external-storage

我正在尝试使用以下代码从SD卡写入/读取:

     try {
    File sdcard = Environment.getExternalStorageDirectory();
    File file = new File(sdcard,INITIAL_FILE_NAME);

        if (!file.exists()) {
            file.createNewFile();
        }
     }
    catch (IOException e) {
       Log.e("TAG",e.getMessage());
    }

在清单中我给予以下许可:

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

但是在尝试阅读时,我遇到以下异常:

     open failed: EACCES (Permission denied)

我正在使用

提供我的应用系统权限(用于其他所需任务)
     android:sharedUserId = "android.uid.system"

当我删除权限时,我可以访问SD卡。由于某种原因,系统权限与sdcard的读/写冲突相冲突。

有人可以告诉我这背后的原因吗?有没有办法管理它们?

1 个答案:

答案 0 :(得分:0)

在请求卸载SD卡后继续保持打开文件夹的进程将被终止,以便可以卸载。

我们不希望系统进程能够访问SD卡以避免这些问题(以及一般的安全清洁度),因此它无权访问它。

如果要访问SD卡,则不应使用系统共享用户ID。