美文网首页
Android定位功能使用前校验

Android定位功能使用前校验

作者: 咚咚_Coding | 来源:发表于2021-06-29 11:44 被阅读0次

场景一:获取位置信息开关是否打开

/**
 * 手机是否开启位置服务,如果没有开启那么所有app将不能使用定位功能
 */
fun isLocServiceEnable(): Boolean {
    val locationManager = Utils.getApp().getSystemService(Context.LOCATION_SERVICE) as LocationManager
    val gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
    val network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
    return gps || network
}

场景二:设置--应用--权限管理--app--位置信息开关

//获取当前应用是否打开位置权限
private val mRxPermissions: RxPermissions by lazy {
    RxPermissions(this)  
}       
检查Manifest.permission.ACCESS_FINE_LOCATION)
mRxPermissions.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)
Total:满足以上两条件,证明定位功能可用
比如获取当前经纬度
if (NetworkUtils.isConnected() && OrderLocationUtils.isLocServiceEnable()
&&mRxPermissions.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) {
  //todo  excute your code
        }

不满足 可以提示引导用户打开相应开关

获取权限详细情况
    mRxPermissions.requestEach(Manifest.permission.ACCESS_FINE_LOCATION)
        .subscribe(new Consumer<Permission>() {
            @Override public void accept(Permission permission) throws Exception {
                if (permission.granted) {
               //ok
                } else if (permission.shouldShowRequestPermissionRationale) {
               //用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时,还会提示请求权限的                 
             } else {
               //用户拒绝了该权限,并且选中『不再询问』
                }
            }
        }, new Consumer<Throwable>() {
            @Override public void accept(Throwable throwable) throws Exception {                    LogUtils.e("accept(CityFilterActivity.java:199)"+throwable.getMessage());
            }
        });
打开设置
public static void openSetting(@NonNull Activity activity) {
    Intent intent = new Intent();
    intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
    intent.setData(uri);
    activity.startActivity(intent);
}
最后,权限库
com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar

相关文章

网友评论

      本文标题:Android定位功能使用前校验

      本文链接:https://www.haomeiwen.com/subject/daihultx.html