如何在Android Marshmallow中检查是否有任何应用程序设置为选定的模拟位置设置

时间:2017-01-05 11:04:54

标签: android cordova ionic-framework gps

对于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 。基于此,我将通知用户设置选项

  1. How to read selected mock location app in Android M - API 23

  2. Disable / Check for Mock Location (prevent gps spoofing)

0 个答案:

没有答案