对于Android Lollipop及以下版本,我正在检查如下。
if (Secure.getString(this.cordova.getActivity().getContentResolver(), Secure.ALLOW_MOCK_LOCATION).equals("0")) {
return true;
} else {
return false;
}
但是对于 Android M ,此选项已被删除。现在对于 Android M 我正在做如下。但这不起作用并抛出异常。
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
AppOpsManager opsManager = (AppOpsManager) this.cordova.getActivity().getApplicationContext().getSystemService(Context.APP_OPS_SERVICE);
PackageManager pm = this.cordova.getActivity().getApplicationContext().getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo applicationInfo : packages) {
if (opsManager.checkOp(AppOpsManager.OPSTR_MOCK_LOCATION, applicationInfo.uid, applicationInfo.packageName)== AppOpsManager.MODE_ALLOWED) {
return true;
break;
}
}
}
要解决这个问题,我已经阅读了以下所有链接,但没有什么能满足我的要求。我的Requiremnet是,如果任何应用程序设置为使用Mock Location,那么我应该得到 true 。基于此,我将通知用户设置选项无