Android 获取位置信息时避免应用崩溃:权限检查方法
要让代码在没有权限时不执行,可以在代码中添加权限检查逻辑。以下是修改后的代码:
@Override
public void run() {
if (ContextCompat.checkSelfPermission(mContext.get(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// 没有位置权限,不执行代码
return;
}
LocationManager locationManager = (LocationManager)mContext.get().getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
boolean isMock = location.isFromMockProvider();
if (isMock) {
ToastUtil.showToast(mContext.get(), 'FakeLocation!');
// 位置来自模拟提供者
//System.out.println(''+'isMock : return true;');
//return true;
} else {
// 位置不来自模拟提供者
//System.out.println(''+'isMock : return false;');
//return false;
}
}
}
在代码中,首先使用ContextCompat.checkSelfPermission()方法检查是否有位置权限。如果没有权限,则直接返回,不执行后续的代码。这样可以避免应用崩溃。
原文地址: https://www.cveoy.top/t/topic/hL3x 著作权归作者所有。请勿转载和采集!