2012-10-20 42 views
2

在android平台的某个位置,我希望识别请求位置更新的应用程序,但我意识到这违反了平台的编程逻辑是“上下文”自由。识别调用位置服务的应用程序 - Android位置框架

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

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

回答

0

你可以做到以下几点:在适当的地方

  1. 转到LocationMangerService.java在frameworks/base/services/java/com/android/server/LocationManagerService.java
  2. 认沽(例如,到requestLocationUpdates方法,也为其他的方法)的功能Binder.getCallingUid()

所以之后,你就会知道调用应用程序的uid。我希望这能帮到您!

+0

感谢您的见解!我会尝试了这一点,并让你知道,如果它达到必要的结果.. 对不起,这毫无意义评论..一旦我有一些结果,将更新它! –

+0

此方法有效。我测试过了,它按预期工作 –

0

我发现了一个平庸的拼凑类型的答案我的问题。 恰巧,LocationListener的toString()方法有一个Override,它返回实例化LocationListener对象的应用程序的包名。通过使用这个,我目前正在区分这些应用程序。

不过,我敢肯定,必须有一个更优雅的解决问题的方法

相关问题