我試圖從擴展BroadcastReceiver的類開始一個活動。如果上下文不是活動上下文但是應用程序上下文如何啓動一個Intent
public void onReceive(Context context, Intent intent) {
問題是參數上下文是Application上下文而不是Activity上下文。
有沒有辦法使用應用程序上下文啓動意圖?
我試圖從擴展BroadcastReceiver的類開始一個活動。如果上下文不是活動上下文但是應用程序上下文如何啓動一個Intent
public void onReceive(Context context, Intent intent) {
問題是參數上下文是Application上下文而不是Activity上下文。
有沒有辦法使用應用程序上下文啓動意圖?
下面是如何使用上下文調用另一個活動的示例代碼, 設置的標誌按照您的要求:
public void onReceive(Context context, Intent intent) {
Intent startActivity = new Intent();
startActivity.setClass(context, xxx.class);
startActivity.setAction(xxx.class.getName());
startActivity.setFlags(
Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(startActivity);
}
是的,只需使用上下文並從該上下文中調用startActivity()
方法即可。
這是不正確;除非Intent包含FLAG_ACTIVITY_NEW_TASK標誌,否則不允許應用程序上下文啓動Activities。 – tophyr 2015-07-29 16:52:01
這個答案在作品的回答中含糊不清。 要使用應用程序上下文調用startActivity,請包含標誌FLAG_ACTIVITY_NEW_TASK。 也考慮將名稱從上下文更改爲appContext,以便清楚瞭解您期望的上下文。 – Alon 2016-07-21 17:06:35