我想知道是否有办法在android上获取当前运行活动的上下文。例如,我有一个活动类,它正在运行。我想要的是调用另一个简单类来运行从Activity Class调用的一些函数。通过这样做,我需要在Simple Class上设置Activity类的上下文;另一方面,我需要具有当前运行活动的上下文,以便我的Simple类可以实际运行从当前运行活动调用的函数。
以下是我项目的软代码。
public class Main1 extends Activity {
private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getAPNsInfo.doSomething();
}
}
public class GetAPNsInfo {
public void doSomething() {
Button button = currentRunningActivityContext.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
}
}
最后,我对这个主题的目的是,我需要一个很好的方法来获取当前运行的活动信息。
这是我找到自己的解决方案。但它并没有完全解决这个问题。我们可以在Manifest.xml中添加一个接收器。这将运行后台应用程序。
<receiver android:name=".RunningActivityCapture">
<intent-filter android:priority="-1">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
</intent-filter>
</receiver>
后台应用程序界面如下所示:
public class RunningActivityCapture extends BroadcastReceiver {
@Override
public void onReceive(Context aContext, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_ALL_APPS)) {
Activity activty = intent.getCurrentActivity();
Session session = new Session();
session.setRunningActivity(activty);
}
return;
}
}
我只从会话类中获取从后台应用程序设置的活动。这是我解决这个问题的第一个想法。但是代码不正确。所以我需要你的帮助。
答案 0 :(得分:3)
如果您在helper类中询问如何使用此MainActivity
,则可以将Activity本身传递到您的类中,因为活动 是一个Context。所以你的构造函数将是:
public GetAPNsInfo(Context context) {
...
}
将上下文存储在字段中并稍后使用。您将使用
进行初始化private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo(this);
如果您询问如何在应用程序中获取 ANY 活动的上下文,我认为不推荐这样做。