Android 运行时权限(requestPermissions)不起作用
我必须在运行时检查片段中的权限以获取位置。 这里有一个检查权限的函数Android 运行时权限(requestPermissions)不起作用,android,permissions,Android,Permissions,我必须在运行时检查片段中的权限以获取位置。 这里有一个检查权限的函数 public void weather() { mFusedLocationClient = LocationServices.getFusedLocationProviderClient(getActivity()); try { if (checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATI
public void weather() {
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(getActivity());
try {
if (checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 123);
return;
}
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(getActivity(), new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
syncData(latitude, longitude);
}
}
});
return;
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 123) {
weather();
}
}
在onRequestPermissionsResult中尝试以下条件
if (requestCode == 123 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
weather();
}
您可以删除并设置ActivityCompat.checkSelfPermission(getActivity(),Manifest.permission.ACCESS_\u位置)!=PackageManager.PERMISSION\u已授予
,因为它属于同一权限组,具有访问权限\u FINE\u位置请尝试此操作
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[],
@NonNull int[] grantResults) {
if (requestCode == 123) {
if (grantResults.length == 1 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
weather();
} else {
Toast.makeText(getActivity(), "Permission denied", oast.LENGTH_SHORT).show();
}
}
}
我不太确定,你可以尝试添加ActivityCompat作为前缀,比如ActivityCompat.checkSelfPermission和ActivityCompat.requestPermissions,然后再试一次吗?它不起作用。。。在低于棉花糖的Android版本上!
if(requestCode==123){
中的幻数123来自哪里?@M.ArslanKhan Try FragmentCompat.requestPermissions?使用Rxpermission'com.tbruyelle.rxpermissions:rxpermissions:0.7。0@aar'
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[],
@NonNull int[] grantResults) {
if (requestCode == 123) {
if (grantResults.length == 1 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
weather();
} else {
Toast.makeText(getActivity(), "Permission denied", oast.LENGTH_SHORT).show();
}
}
}