gpt4 book ai didi

android - 两次检查 Content Resolver for Allow Mock Locations 提供不同的结果

转载 作者:搜寻专家 更新时间:2023-11-01 09:10:18 30 4
gpt4 key购买 nike

当未选中“应用程序 > 设置 > 开发 > 允许模拟位置”时,我有以下代码在模拟器 (OS 2.3.3) 中评估为 true。我希望该方法返回 false,但它返回 true。

public static boolean isMockLocationSet(Context context) {
if (Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 0) == 0) {
return false;
}
else {
return true;
}
}

以下更改按预期返回 false(顺便说一句,.equals 或 .ContentEquals 哪个更好?):

public static boolean isMockLocationSet(Context context) {
if (Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0")) { //.contentEquals("0")
return false;
}
else {
return true;
}
}

我更喜欢第一个示例,因为它应该允许可能存在空值的情况,分配默认值 0 并仍然允许逻辑执行而不会失败(事实上,我怀疑这种情况可能存在但尚未证明) - 例如,制造商在没有建立所有这些设置的情况下实现 Android(即一些像 Allow Mock Locations 将以 null 开始它们的生命)...等待用户检查设置,然后再将 1(或 0 未选中时)写入表) .

那么问题是什么?好吧,我从错误报告中感觉到不同的设备以不同的方式处理此检查但无法访问所有设备类型,我正在寻找有关如何一般/最佳处理的建议。另外,为什么第一个示例不起作用?

最佳答案

好吧,我决定简单地使用以下检查:

public static boolean isMockLocationSet(Context context) { 
if (Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).contentEquals("1")) {
return true;
}
else {
return false;
}
}

当然,此方法会适本地处理 null 情况——返回 false。

我不能说为什么原始问题中的代码不起作用...可能是 SDK 中的错误。

关于android - 两次检查 Content Resolver for Allow Mock Locations 提供不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698945/

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