作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试寻找一种方法来读取 Android M 中模拟位置的新设置。
在 Android M 之前,模拟位置设置是一个名为“使用模拟位置”的切换选项,使用此设置可读:Settings.Secure.ALLOW_MOCK_LOCATION
在Android M中,mock location setting是一个为mock locations选择的app,所以它是一个多元素列表,被选中的元素可以是“none”。
该线程有一个解决方案,用于在监听位置时确定位置更新的来源,但不幸的是我想阅读设置本身: How to check for Mock Location in Android Marshmallow?
我想了解是否有选定的模拟位置应用程序,最好还有选定的应用程序。欢迎任何关于如何做到这一点的想法!
最佳答案
好的,通过 android 开发者网站进行挖掘,这就是我想出的。你必须使用 AppOpsManager . checkOp("android:mock_location", "yourUID", "com.your.package.name")
我认为您可以通过更改包名称来检查是否启用了不同的应用。
public boolean isMockLocationEnabled(){
boolean isMockLocation = false;
try {
//if marshmallow
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
AppOpsManager opsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
isMockLocation = (opsManager.checkOp(AppOpsManager.OPSTR_MOCK_LOCATION, android.os.Process.myUid(), BuildConfig.APPLICATION_ID)== AppOpsManager.MODE_ALLOWED);
} else {
// in marshmallow this will always return true
isMockLocation = !android.provider.Settings.Secure.getString(mContext.getContentResolver(), "mock_location").equals("0");
}
} catch (Exception e) {
return isMockLocation;
}
return isMockLocation;
}
关于android - 如何在 Android M - API 23 中读取选定的模拟位置应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003553/
我是一名优秀的程序员,十分优秀!