获取ExternalFilesDir权限

8

我的应用程序已经在Play Store上线,我发现当调用某些功能时没有向用户请求权限:

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

奇怪的是,如果没有运行时权限调用此函数时我不会遇到任何崩溃问题。我在我的运行Nougat的设备上测试,文件被创建了并且我没有遇到任何崩溃问题。
我只在Manifest中声明了权限,但是我没有请求运行时权限。
在SO上有很多回答说,当在外部文件目录中创建文件夹/文件时应该要求运行时权限。
我的问题是,调用上述功能时是否需要请求运行时权限?如果是,为什么我没有遇到任何崩溃问题?如果有人能提供一个链接让我阅读相关内容,那将非常有帮助。

1
https://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String) - AskNilesh
3个回答

9
虽然getExternalFilesDir()返回外部存储的路径,但您无需获得访问权限即可访问该目录。
它与getFilesDir()相同,但其他应用程序也可以访问它。
还请注意,如果您在该目录中编写任何内容并清除应用程序数据或卸载该应用程序,则所有内容都将被删除。
有关更多信息,请阅读文档

0

-4
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;
}
}

很抱歉,这并没有回答我的问题。我知道如何请求权限,但那不是我的问题。 - ClassA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接