识别调用位置服务的应用程序 - 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)绑定的方式调用服务的方法/图片的各种操作/人脸识别