我想知道是否有一种方法可以获取 Android 上当前正在运行的 Activity 的上下文。例如,我有一个 Activity 类并且它正在运行。我想要的是调用另一个简单类来运行从 Activity 类调用的一些函数。通过这样做,我需要在简单类上设置 Activity 类的上下文;另一方面,我需要具有当前正在运行的 Activity 的上下文,以便我的简单类可以实际运行从当前正在运行的 Activity 调用的函数。
下面是我项目中的软代码。
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
}
});
}
}
最后,我此线程的目的是我需要一种好方法来获取当前正在运行的 Activity 信息。
这是我自己找到的解决方案。但这并不能彻底解决这个案子。我们可以在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;
}
}
我只从 session 类获取 Activity ,该 Activity 是从我的后台应用程序设置的。这是我解决这个问题的第一个想法。但代码不正确。所以我需要你的帮助。
最佳答案
如果您询问如何在辅助类中使用此 MainActivity
,您可以将 Activity 本身传递到您的类中,因为 Activity 是上下文。所以你的构造函数将是:
public GetAPNsInfo(Context context) {
...
}
将上下文存储在字段中并在以后使用它。您将初始化
private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo(this);
如果您询问如何获取应用程序中任何 Activity 的上下文,我认为不建议这样做。
关于java - 获取当前正在运行的 Activity 的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924601/