如何知道哪个应用程序(上下文)启动/绑定了服务



我有一个服务在另一个包中。如何知道哪个活动或应用程序(上下文)已经启动或绑定了该服务,知道许多应用程序可以在同一设备中访问(绑定)该服务?

我以这种方式启动/绑定服务:

    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);
    }

有没有一种方法可以获取绑定服务的应用程序的上下文?

您可以从服务中调用Binder上的getCallingUid()和/或getCallingPid(),以尝试辨别调用请求的内容。

您最多可以从Binder获得进程id。

如果你想从进程id中找到应用程序包名称,你必须搜索ActivityManager.getRunningAppProcesses() 所有值的RunningAppProcessInfo.pid

但是,如果您同时编写服务和客户端代码,那么您可以为客户端代码编写一些额外的代码,以在连接后识别上下文。

相关内容

  • 没有找到相关文章

最新更新