gpt4 book ai didi

android - 如何在 Android M - API 23 中读取选定的模拟位置应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:35:37 29 4
gpt4 key购买 nike

我正在尝试寻找一种方法来读取 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com