Android Can';t处理片段中权限对话框中的单击按钮允许
安卓工作室3.4 下面是我如何在片段中显示权限对话框:Android Can';t处理片段中权限对话框中的单击按钮允许,android,android-studio,android-permissions,Android,Android Studio,Android Permissions,安卓工作室3.4 下面是我如何在片段中显示权限对话框: private boolean checkAndRequestPermissions() { int internet = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.INTERNET); int loc = ContextCompat.checkSelfPermission(getActivity(), Manifest.perm
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;
}
private boolean checkAndRequestPermissions(){
int internet=ContextCompat.checkSelfPermission(getActivity(),Manifest.permission.internet);
int loc=ContextCompat.checkSelfPermission(getActivity(),Manifest.permission.ACCESS\u位置);
int loc2=ContextCompat.checkSelfPermission(getActivity(),Manifest.permission.ACCESS\u FINE\u LOCATION);
List ListPermissionsNeed=new ArrayList();
如果(internet!=已授予PackageManager.PERMISSION){
listPermissionsNeed.add(Manifest.permission.INTERNET);
}
如果(loc!=已授予包装管理员权限){
listPermissionsNeed.add(Manifest.permission.ACCESS\u位置);
}
如果(loc2!=已授予PackageManager.权限){
listPermissionsNeed.add(Manifest.permission.ACCESS\u FINE\u位置);
}
if(BuildConfig.DEBUG)
Log.d(标记为“checkAndRequestPermissions_ListPermissionsNeed”(+ListPermissionsNeed.size()+));
如果(!ListPermissionsNeed.isEmpty()){
ActivityCompat.requestPermissions(getActivity(),ListPermissionsNeed.toArray(新字符串[ListPermissionsNeed.size()]),1);
返回false;
}
返回true;
}
结果如下:
很好。
但是我需要处理单击按钮允许执行一些特定操作。您必须覆盖请求许可结果的
,如下所示:
@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;
}
}
}
据我所知,没有办法设置一个侦听器,但你可以在事后检查它,就像你以前检查它一样
if (internet == PackageManager.PERMISSION_GRANTED) {
//internet allowed
}
if (loc == PackageManager.PERMISSION_GRANTED) {
//loc allowed
}
if (loc2 == PackageManager.PERMISSION_GRANTED) {
//loc2 allowed
}
这应该可以解决您的问题。不调用方法onRequestPermissionsResult()