在我的Android应用程序( minSdkVersio n 15)中,我必须创建目录并将文件写入其中。在我使用的AppManifest中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在创建目录或文件之前,我正在检查是否允许或拒绝权限,如
boolean isAllow = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
但它始终返回 true 或 PERMISSION_GRANTED ,即使有人设置拒绝来自设置的权限 - &gt;应用 - &gt;权限的
为什么checkSelfPermission
总是返回PERMISSION_GRANTED?有没有办法检查权限是否被拒绝?
要调用我使用过的权限:
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
但它没有显示权限对话??
答案 0 :(得分:3)
在新权限模型中,具有危险保护级别的权限是运行时权限。对于定位到M及以上的应用,用户可能无法随时授予此类权限或撤消这些权限。对于定位API低于Marshmallow(&lt; 23)的应用,这些权限始终被授予,因为此类应用不会期望权限撤销并且会崩溃。因此,当用户在UI中禁用遗留应用程序的权限时,平台会禁用由此权限保护的API,使其成为无操作,无效或返回空结果或默认错误。
有关详细信息,请访问PermissionChecker
答案 1 :(得分:0)
对于那些使用Xamarin开发的人,请确保在清单中显式设置targetSDK版本> = 23。
不要为目标SDK自动使用!
答案 2 :(得分:0)
如果您的targetSdkVersion至少为23,则可以通过以下代码解决问题:
int permissionCheck = PermissionChecker.checkSelfPermission(getReactApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);