【问题标题】:Android is blacklisting our locationAndroid 将我们的位置列入黑名单
【发布时间】:2015-04-19 21:59:37
【问题描述】:

我们在应用程序中创建了一个 LocationListener。有时,手机会进入“GPS 间隙”并停止报告位置数据。我们已经观察了一段时间,似乎唯一能将其从这种状态移开的就是重启手机。

我将它们连接起来以清除日志并发现:

02-18 13:35:43.671   703   948 I LocationManagerService: handleLocationChanged for android.uid.system:1000, Provider: passive
02-18 13:35:43.671   703   948 I LocationManagerService: handleLocationChanged for com.google.uid.shared:10040, Provider: passive
02-18 13:35:43.671   703   948 I LocationManagerService: handleLocationChanged for com.google.uid.shared:10040, Provider: passive
02-18 13:35:43.671   703   948 D LocationManagerService: dropping location (blacklisted): com.google.android.apps.maps matches com.google.

查看提到的源文件,它只是检查它创建的黑名单,如果它在黑名单中,显然不会报告这一点。

查看代码和上面的代码,它看起来像是阻止任何 com.google 的位置数据,但我不知道为什么。

我搜索并没有找到任何相关信息,希望能得到一些帮助。

【问题讨论】:

  • 您是在白宫内部开发此应用程序吗?还是来自某个军事基地?这是源代码中的那个字符串:android.googlesource.com/platform/frameworks/base.git/+/… 但是,它没有谈论黑名单的根本目的,所以我和你一样难过。
  • @StephanBranczyk 我可以告诉你我们正在编写的超级秘密间谍应用程序,但我不得不向你开枪。
  • @StephanBranczyk 对不起,如果你是认真的,不,我不知道为什么这个空间会被列入黑名单。此外,我们在这个位置有许多电话,黑名单仅适用于偶尔使用的电话,因此它是电话本地的,而不是通用黑名单。
  • 好吧,我确实读过你的简历。您所在的行业是唯一允许在美国使用手机干扰器的行业。所以我不确定黑名单。问题是否仅限于特定品牌的手机?
  • 目前,我们只使用摩托罗拉 RAZR M。我们正在寻找新设备,所以我们测试的唯一设备。

标签: android gps


【解决方案1】:

位置黑名单和白名单分别存储在Settings.SecurelocationPackagePrefixBlacklistlocationPackagePrefixWhitelist 中。这些值包含逗号分隔的包名称前缀。 LocationBlacklist.isBlackListed() 首先检查黑名单是否匹配,然后检查白名单是否有异常。 LocationBlacklist 注册了 ContentObserver,因此对设置值的任何更改都会立即生效。

自 Android 5.1 起,LocationManagerService 中的 getLastLocation()handleLocationChangedLocked() 以及 GeofenceManager 中的 updateFences() 会参考这些列表。如果应用程序的前缀或全名被列入黑名单,这些只是返回 null 或静默退出。所有其他位置 API 均不受影响。

由于您在黑名单中观察到运行时更改,因此必须有一个系统进程在启动后的某个时间将com.google 添加到Settings.Secure 值。如果您无法识别,那么也许通过 sqlite3 命令行手动更改值会恢复对您的应用程序的更新。它可能会在某个时候变回来,但识别罪魁祸首可能比每次都等待重新启动更容易。您也可以尝试将com.google.android.apps.maps 添加到白名单例外中。

就您问题的根本原因而言,我的猜测是黑名单是由您设备上的 Gapps 的某些部分完成的。也许它认为它在模拟器或虚拟机中运行?您是否正在运行自定义 ROM?

【讨论】:

    【解决方案2】:

    您应该将手机插入 IDE 并重新启动它,同时观察可能导致位置禁令的任何更改的逻辑。我认为可能的原因是您的设备标识符需要一些时间来注册手机天线,这就是导致重启暂时出现以解决问题的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2020-01-22
      • 1970-01-01
      相关资源
      最近更新 更多