检查是否存在具有和不具有READ_EXTERNAL_STORAGE权限的文件

时间:2014-09-08 15:27:10

标签: java android

假设我有以下简单代码:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        File sdCard = Environment.getExternalStorageDirectory();
        String sdCardPath = sdCard.getAbsolutePath();
        String parentPath = sdCardPath + File.separator + "parent";
        String childPath = parentPath + File.separator + "child";
        File parent = new File(parentPath);
        File child = new File(childPath);
        if (parent.exists()) {
            Log.d("LOG", "Parent folder exists");
        } else {
            Log.d("LOG", "Parent folder doesn't exist");
        }
        if (child.exists()) {
            Log.d("LOG", "Child folder exists");
        } else {
            Log.d("LOG", "Child folder doesn't exist");
        }

    }
}

另一方面,我在parentchild创建了2个文件夹<sdcard_root>/parent<sdcard_root>/parent/child,以便进行检查。

当清单文件中的READ_EXTERNAL_STORAGE权限时,结果为:父文件夹存在,子文件夹不存在。当我在清单文件中添加该权限时,结果就像我们预期的那样,两个文件夹都存在。

让我感到困惑的是,即使不使用READ_EXTERNAL_STORAGE权限,我们仍然可以检测到位于sdcard根目录的parent文件夹是否存在,但是我们无法执行此操作child文件夹。为什么?

IMO,当不使用读取权限时,检查结果应该是:父文件夹和子文件夹都不存在。为什么位于外部存储目录根目录的文件/文件夹被区别对待?在我看来,这似乎是一个例外。最后,在Android中使用权限时我们应该知道任何类似的例外吗?

感谢。

0 个答案:

没有答案