android定位坑简书,关于android的模拟定位问题

'''

//判定是否使用了模拟定位

if(isSelectedMoniLocal(this)){

Intent intent = new Intent(

Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);

startActivityForResult(intent, 0x0000101);

}

'''

/**

* 6.0以上系统判定是否允许当前应用使用模拟定位

* true--允许

* false--禁止

* @param mContext

* @return

*/

public static boolean isSelectedCurApp(Context mContext){

boolean statue=true;

String serviceName = Context.LOCATION_SERVICE;

locationManager = (LocationManager) mContext.getSystemService(serviceName);

try {

String providerStr = LocationManager.GPS_PROVIDER;

LocationProvider provider = locationManager.getProvider(providerStr);

if (provider != null) {

locationManager.addTestProvider(

provider.getName()

, provider.requiresNetwork()

, provider.requiresSatellite()

, provider.requiresCell()

, provider.hasMonetaryCost()

, provider.supportsAltitude()

, provider.supportsSpeed()

, provider.supportsBearing()

, provider.getPowerRequirement()

, provider.getAccuracy());

} else {

locationManager.addTestProvider(

providerStr

, true, true, false, false, true, true, true

, Criteria.POWER_HIGH, Criteria.ACCURACY_FINE);

}

} catch (SecurityException e) {

//如果没有选择当前的应用,则addTestProvider会抛出异常

statue= false;

}

return statue;

}

public static boolean isSelectedMoniLocal(Context mContext){

boolean status=false;

if(Build.VERSION.SDK_INT > 22){

//6.0以上版本

if(isSelectedCurApp(mContext)){

ToastUtil.showMessage(mContext, "为保证位置精确性,请不要允许此应用使用模拟定位",

Toast.LENGTH_SHORT);

status=true;

}

}else{

if (getMockLocationStatus(mContext).equals("1")) {

ToastUtil.showMessage(mContext, "为保证位置精确性,请关闭【允许模拟位置】选项!",

Toast.LENGTH_SHORT);

status=true;

}

}

return status;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值