java - 运行时未调用权限
问题描述
我已经实施了许可android.permission.CALL_PHONE
。问题是,在进行测试时,一旦取消,就不会询问许可。
也就是说,如果我在运行时请求它并且我说如果我想允许调用,它会完美运行,但如果我说我不想允许调用,我无法在下一次打开时再次询问它的应用程序。
应用程序是否可以通过任何方式再次请求许可?如果没有,有没有办法将用户发送到应用程序信息以从那里接受它?
谢谢你。
解决方案
简短回答 - 如果用户拒绝并再次勾选从不询问,您将无法再次询问权限。
但是您可以显示一些有意义的消息并要求用户手动启用您的应用程序的权限。更多您可以将用户重定向到 Android 设置下的应用权限页面。
您可以检查用户是否早先拒绝使用shouldShowRequestPermissionRationale
.
您可以阅读有关权限的更多信息 https://developer.android.com/training/permissions/requesting
我使用以下代码库来实现权限检查
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_PERMISSION) {
// Permission check if the user granted/denied them you may want to group the rationale in a single dialog
for (int i = 0, len = permissions.length; i < len; i++) {
String permission = permissions[i];
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
// denied the permission
boolean showRationale = shouldShowRequestPermissionRationale( permission );
if (! showRationale) {
// User ticked "never ask again"
// Show some meaningful message
} else if (Manifest.permission.WRITE_CONTACTS.equals(permission)) {
showRationale(permission, R.string.permission_denied_contacts);
// NOT ticked "never ask again"
} else if ( /* possibly check more permissions...*/ ) {
}
}
}
}
}
推荐阅读
- ios - 你如何在一个类中进行双向绑定?
- python - PyQt5 - 无法在布局中调整像素图大小
- python-3.8 - Python3.8、MySQL5.7:将活动通配符传递给 LIKE 查询
- c# - ServiceStack Redis 获取一个结构总是返回默认值
- reactjs - 未找到 Bluehost 托管的 React 页面
- python - python-matrix 使用嵌套列表 - 意外输出
- excel - 如果函数产生不同的李克特量表响应值
- python - 3D 扩散/热方程的有限差分法
- reactjs - 如何将数据播种到 Firebase Firestore
- unity3d - 当有多个光子视图对象时自发移动