RequestPermissions未显示对话框

5

我发现很多类似的主题都有相同的问题,但我仍然找不到解决我的问题的方法。我编写了这段代码来授予应用程序写入权限,但没有显示对话框。在监视器中,我收到了“没有写权限”的消息。

if(ContextCompat.checkSelfPermission(getContext(),Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {
Log.i("permissions", "No writing permission");

ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 225);

我在 AndroidManifest 文件中添加了权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我将目标 sdk targetSdkVersion 23 进行了更改,同时我正在使用 android 6.0.1

编辑: 我也尝试了这段代码,但它仍然没有起作用。

requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 225);

你使用的设备版本是什么? - Ashish Shukla
我刚刚复制了你的代码,它可以正常运行。 - Ashish Shukla
2个回答

3

我有类似的情况。不要尝试从 Fragment 中使用 ActivityCompat 调用它,而是使用 Fragment 中提供的 requestPermissions 方法。

 requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 225);

1

如果设备>= 6.0,则RequestPermissions对话框仅在以下2种情况下不会显示:

1)您已经授予要求类别中任何危险权限之一的权限。

2)您以前曾点击过对话框中的不再询问复选框。


1
已经获得了第1点的链接。 https://developer.android.com/about/versions/oreo/android-8.0-changes#rmp - Spring Breaker
假设点击了“不再询问”选项后,下一次如何显示请求权限对话框?@Ashish Shukla - krishna
@krishna 使用此链接:https://medium.com/@begalesagar/method-to-detect-if-user-has-selected-dont-ask-again-while-requesting-for-permission-921b95ded536 - Ashish Shukla

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