提问者:小点点

如何检测是哪个activity导致服务在Android中启动?


假设我有几个叫做A,B,C的活动。

从这个活动中,我想启动一个名为X的后台服务。

有可能从服务中检测到启动它的activity的类名是什么吗?

例如,如果服务是由activity B启动的,那么我应该得到类似B或B的内容。Class

我想知道是否可以在不对类名进行硬编码的情况下,通过将它作为导致服务启动的意图中的一个额外项来实现这一点(因此,如果我创建了更多的活动,我就不必在每个活动的意图中添加类名)。


共1个答案

匿名用户

首先在你的X类中定义一个上下文或一个activity。

public class X ()
{
    private Activity activity;

    public X (Activity activity) {
    this.activity = activity;
     }
}

然后在类X中创建一个方法来获取activity名称

  public void GetName() {
    PackageManager packageManager = activity.getPackageManager();
    try {
        ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0);
        Log.e("called from service", "Activity name:" + info.name);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
}

 public void GetName() {
        String name  = activity.getClass().getSimpleName();
        Log.e("service",name);
    }

然后您可以在您的类B中调用此方法,例如:

X service  = new X(B.this);
service.GetName();