onrequestpermissionsresult方法grantResults [0]总是返回-1 情况下都允许和拒绝请检查下面我的代码: -onrequestpermissionsresult补助结果总是-1
请求的位置的权限: -
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
int hasReadStatePermission = getActivity().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);
if (hasReadStatePermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}, Constants.RequestCode.KEY_PERMISSION_ACCESS_FINE_LOCATION);
}else {
setLocation();
}
}else {
DialogUtils.dialogTwoButton(getActivity(), "Allow", "Deny", getString(R.string.msg_get_gps_access), new Runnable() {
@Override
public void run() {
setLocation();
}
}, new Runnable() {
@Override
public void run() {
Intent intent=new Intent(getActivity(), ChangeLocationManualyActivity.class);
startActivityForResult(intent,Constants.RequestCode.LOCATION_CHANGE);
}
});
权限回调方法,其中PackageManager.PERMISSION_GRANTED = 0,PackageManager.PERMISSION_DENIED = -1
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode==Constants.RequestCode.KEY_PERMISSION_ACCESS_FINE_LOCATION)
if(grantResults.length>0&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
setLocation();
}else{
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(getActivity(), ChangeLocationManualyActivity.class);
startActivityForResult(intent,Constants.RequestCode.LOCATION_CHANGE);
}
},3000);
}
}
是应用程序请求权限? –
是应用程序请求权限 –
对于迟来的评论感到抱歉发生此问题是因为我设置了清单权限仅针对 并且在运行时请求Manifest.permission .ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION。 –