android - 无法在片段的权限对话框中处理单击按钮允许
问题描述
安卓工作室 3.4。
这里我如何在片段中显示权限对话框:
private boolean checkAndRequestPermissions() {
int internet = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.INTERNET);
int loc = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION);
int loc2 = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION);
List<String> listPermissionsNeeded = new ArrayList<>();
if (internet != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.INTERNET);
}
if (loc != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (loc2 != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (BuildConfig.DEBUG)
Log.d(TAG, "checkAndRequestPermissions_listPermissionsNeeded(" + listPermissionsNeeded.size() + ")");
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(getActivity(), listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), 1);
return false;
}
return true;
}
这里的结果:
好的。但是我需要处理点击按钮允许做一些特定的操作。
解决方案
onRequestPermissionsResult
您必须像这样覆盖:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// user pressed ALLOW
} else {
// user pressed DENY
}
return;
}
}
}
推荐阅读
- javascript - 只有 MM//DD/YYYY 的 MM 部分分配给变量
- c# - 在 wpf 自定义控件中的 OnApplyTemplate 之前调用 SelectionChanged
- jquery - 无法使用 jquery 执行日期验证
- wso2 - 如何在 WSO2 siddi 文件中创建和访问环境变量?
- excel - 运行时错误“380”无法设置 RowSource 属性,属性值无效
- javascript - 如何将数组的一项与数组的另一项连接起来
- javascript - 如何从 Android Java 毫不延迟地调用 WebView Javascript 中的函数?
- typescript - 打字稿编译器忽略现有的命名空间
- scala - 在 spark 1.6 中将 spark 的输出保存到 csv
- python - 如何用向量的元素划分 keras 3D 张量的切片?