当一个应用程序通过bindService()绑定我的服务时,将调用onBind() 。
我的问题是我想知道哪个应用程序连接到我的服务。程序包名称、进程 ID 或任何在运行该应用程序时保持不变的信息都可以。
有可能吗?怎么做?
当一个应用程序调用我在aidl文件中定义的服务接口时出现了同样的问题,我可以弄清楚哪个应用程序正在调用吗?
当一个应用程序通过bindService()绑定我的服务时,将调用onBind() 。
我的问题是我想知道哪个应用程序连接到我的服务。程序包名称、进程 ID 或任何在运行该应用程序时保持不变的信息都可以。
有可能吗?怎么做?
当一个应用程序调用我在aidl文件中定义的服务接口时出现了同样的问题,我可以弄清楚哪个应用程序正在调用吗?
您Binder
可以调用类似getCallingUid()
的方法,然后(如果需要)将该信息与类似的东西交叉引用ActivityManager
并PackageManager
找出调用者的可能包名称。
我说“可能的包名称”,因为android:sharedUserId
意味着多个应用程序可以共享一个 UID。这是不寻常的,但肯定不是不可能的。