识别调用位置服务的应用程序 - Android 位置框架

Posted

技术标签:

【中文标题】识别调用位置服务的应用程序 - Android 位置框架【英文标题】:Identifying the application that invoked Location Service - Android location framework 【发布时间】:2012-10-10 22:19:49 【问题描述】:

android 平台的某个时刻,我希望识别正在请求位置更新的应用程序,尽管我意识到这违反了“无上下文”平台的编程逻辑。

我翻遍了 android 定位框架,但找不到将 LocationListener 标记回应用程序的方法。

是否可以确定哪个类或包实例化了特定对象?

【问题讨论】:

【参考方案1】:

您可以执行以下操作:

    转到 frameworks/base/services/java/com/android/server/LocationManagerService.java 中的 LocationMangerService.java 在适当的位置(例如,放入requestLocationUpdates 方法和其他方法)一个函数Binder.getCallingUid()

因此,之后您将知道调用应用程序的 uid。希望对您有所帮助!

【讨论】:

感谢您的洞察力!我会尝试一下,如果它达到必要的结果,请告诉您。对这个毫无意义的评论感到抱歉..一旦我有一些结果,我会更新它! 此方法有效。我已经测试过了,它按预期工作【参考方案2】:

对于我的问题,我找到了一个平庸的拼凑式答案。 碰巧 LocationListener 的 toString() 方法有一个 Override,它返回实例化 LocationListener 对象的应用程序的包名称。通过使用它,我目前正在区分应用程序。

但是,我确信必须有一个更优雅的解决方案来解决这个问题

【讨论】:

以上是关于识别调用位置服务的应用程序 - Android 位置框架的主要内容,如果未能解决你的问题,请参考以下文章

黑马Android(10)绑定的方式调用服务的方法/图片的各种操作/人脸识别

验证码识别与生成类API调用的代码示例合集:六位图片验证码生成四位图片验证码生成简单验证码识别等

从服务访问android位置?

android如何自定义语音识别

从 Android 后台服务问题获取当前位置

基于图片识别服务的IOS图片识别程序