Android AIDL服务如何区分使用它的两个应用程序?

Android AIDL服务如何区分使用它的两个应用程序?,android,service,aidl,Android,Service,Aidl,我正在将一个Android服务构建到一个库中,当它被调用启动时,它在自己的进程中运行。其他应用程序可以通过AIDL接口与此服务通信 情况是:该服务从特定的web获取数据,然后通过回调将检索到的数据传递给不同的应用程序 因为不同的应用可能需要不同的数据。因此,我不明白的一点是,在交付数据时,服务如何区分应用程序 提前感谢。您可以在服务中使用Binder.getCallingPid方法来了解调用过程: 公共静态final int getCallingPid 在API级别1中添加的返回发送消息的进程的

我正在将一个Android服务构建到一个库中,当它被调用启动时,它在自己的进程中运行。其他应用程序可以通过AIDL接口与此服务通信

情况是:该服务从特定的web获取数据,然后通过回调将检索到的数据传递给不同的应用程序

因为不同的应用可能需要不同的数据。因此,我不明白的一点是,在交付数据时,服务如何区分应用程序


提前感谢。

您可以在服务中使用Binder.getCallingPid方法来了解调用过程:

公共静态final int getCallingPid

在API级别1中添加的返回发送消息的进程的ID 正在处理的当前事务。此pid可用于 更高级别的系统服务,以确定其身份并检查 权限。如果当前线程当前未执行 传入事务,然后返回其自己的pid


从进程id中,您可以找到有关调用应用程序的其他信息。

您可以从进程id中提取包名,并从该包名中可以确定调用aidl的应用程序是什么

包名称可以按照解决方案中给出的公式推导:


谢谢,是的,这是一种方式,但应用程序不一定每次启动时都有相同的PID。例如,APP1和APP2使用相同的服务,当服务获得一些消息时,消息本身必须有某种方式来告知其目的地。我在想也许只是使用包名来区分应用程序。msg只是由服务广播。。。谢谢