getExternalFilesDir权限

时间:2018-09-21 05:25:34

标签: java android android-permissions

我的应用程序在Play商店中正常运行,我注意到我在打电话时没有在询问权限

File savedImagesDirectory = getBaseContext.getExternalFilesDir("SavedImages");
if(savedImagesDirectory != null) {
    if (!savedImagesDirectory.exists()) {
        if (savedImagesDirectory.mkdir()) ; //directory is created;
    }
}

奇怪的是,没有运行时权限的情况下,调用此方法不会崩溃。我在运行牛轧糖的设备上进行了测试,并创建了文件,但没有崩溃。

我仅在清单中具有权限,但我不询问运行时权限。

我在SO上看到了很多答案,说在外部文件目录中创建文件夹/文件时应询问运行时权限。


我的问题:

在调用上面的代码时,我应该询问运行时权限吗?如果是,为什么我没有崩溃?

如果有人可以提供一个链接以供我阅读,这也将很有帮助。

2 个答案:

答案 0 :(得分:3)

尽管它返回到外部存储的路径,但您不需要访问def processthis(zipper): for x, y in zipper: # do something with x and y 返回的目录的权限。

它与getExternalFilesDir()相同,但对其他应用也是公开的。

还请注意,如果您在该目录中写入任何内容并清除应用数据或卸载应用,则所有内容都会被删除。

有关更多信息,请阅读https://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

上的文档

答案 1 :(得分:-2)

String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
requestPermissions(permissions, WRITE_REQUEST_CODE);

使用此代码

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] 
grantResults) {
switch (requestCode) {
   case WRITE_REQUEST_CODE:
     if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
       //Granted.


     }
   else{
       //Denied.
     }
    break;
}
}