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。 –