在 android 平台的某个时刻,我希望识别请求位置更新的应用程序,尽管我意识到这违反了“无上下文”平台的编程逻辑。
我浏览了 android 位置框架,但找不到将 LocationListener 标记回应用程序的方法。
是否可以识别哪个类或包实例化了特定对象?
在 android 平台的某个时刻,我希望识别请求位置更新的应用程序,尽管我意识到这违反了“无上下文”平台的编程逻辑。
我浏览了 android 位置框架,但找不到将 LocationListener 标记回应用程序的方法。
是否可以识别哪个类或包实例化了特定对象?
您可以执行以下操作:
frameworks/base/services/java/com/android/server/LocationManagerService.java
requestLocationUpdates
方法和其他方法中)Binder.getCallingUid()
因此,之后您将知道调用应用程序的 uid。我希望这能帮到您!
对于我的问题,我找到了一个平庸的拼凑式答案。碰巧 LocationListener 的 toString() 方法有一个 Override,它返回实例化 LocationListener 对象的应用程序的包名称。通过使用它,我目前正在区分应用程序。
但是,我相信这个问题必须有一个更优雅的解决方案