假设我有几个叫做A,B,C的活动。
从这个活动中,我想启动一个名为X的后台服务。
有可能从服务中检测到启动它的activity的类名是什么吗?
例如,如果服务是由activity B启动的,那么我应该得到类似B或B的内容。Class
我想知道是否可以在不对类名进行硬编码的情况下,通过将它作为导致服务启动的意图中的一个额外项来实现这一点(因此,如果我创建了更多的活动,我就不必在每个活动的意图中添加类名)。
首先在你的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();