2013-04-17 109 views
0

我想製作一個顯示Flash消息的應用程序。我正在收聽android.provider.Telephony.SMS_RECEIVED。當onReceive()調用我開始一個活動。 第一次當onReceive()被調用時它開始活動,但下次不會。這裏是我的代碼無法從廣播接收器多次打開活動

public class MyReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
      this.abortBroadcast(); 
     Intent intent = new Intent(arg0,Start.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     arg0.startActivity(intent); 
    } 
} 

我中止廣播,所以消息不會在收件箱中。

回答

0

它取決於AndroidManifest文件中的「launchMode」,用於「開始」活動。在你的活動中使用launchMode =「standart」或處理onNewIntent方法。

+0

即使更改清單文件中的啓動模式,啓動活動的意圖中的啓動模式設置也將優先。 – vinoth

+0

這可能是一個問題。如果您從活動外部啓動新活動,則應使用FLAG_ACTIVITY_NEW_TASK,但它與launchMode =「singleTask」相同。在這種情況下。新的活動不會被啓動。它可以是2個選項來解決這個問題:1 - 使用activity.onNewIntent或2 - 在你的接收器中獲取上一次開始的活動(使用Application.ActivityLifecycleCallbacks)並從中獲得新的活動。 – akelix

+0

@vinoth是對的。那麼這是什麼解決方案呢? –