2

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

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

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

4

2 回答 2

0

您可以执行以下操作:

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

因此,之后您将知道调用应用程序的 uid。我希望这能帮到您!

于 2012-10-22T21:25:48.253 回答
0

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

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

于 2012-10-23T00:25:10.843 回答