我有另一个包中的服务。 知道许多应用程序可以在同一设备中访问(绑定)此服务,如何知道哪个活动或应用程序(上下文)已启动或绑定该服务?
我以这种方式启动/绑定服务:
private void initService() {
connection = new MyServiceConnection();
Intent i = new Intent();
i.setClassName("br.ufc.great.loccam", "br.ufc.great.loccam.service.SysSUService");
context.startService(i);
boolean ret = context.bindService(i, connection, Context.BIND_AUTO_CREATE);
Log.d(appId, "initService() bound with " + ret);
}
有一种方法可以获取绑定服务的应用程序的上下文吗?
答案 0 :(得分:0)
您可以从服务中call getCallingUid()
和/或getCallingPid()
Binder
来尝试辨别调用请求的内容。
答案 1 :(得分:0)
您可以从Binder获得最佳的进程ID。
如果您要从流程ID中找到应用包名称,则必须搜索RunningAppProcessInfo.pid
ActivityManager.getRunningAppProcesses()
但是,如果您同时编写服务和客户端代码,那么您可以为客户端代码编写一些额外的代码,以便在连接后识别上下文。