2012-04-22 60 views
0

我已經使用AlarmManager安排了一個警報,並且它關閉了BroadcastReceiver。在廣播接收器中,我想調用一個活動並創建一個彈出對話框。從AlarmManager創建一個對話框?

這裏重要的是我想看到用戶在哪裏的背景,而不是先把我的應用程序帶到前臺。看看下面的代碼:

Intent intent = new Intent(context, AlarmActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
context.startActivity(intent); 

現在,這裏是發生了什麼,這是我不想: 1.用戶在看我的申請 2.用戶按下回家,現在在其他一些應用 3.我的應用程序在後臺運行仍然4. 報警triggers-> BroadcastReceiver->上面的意圖開始 5.現在的用戶在看我的應用程序的最後一頁,我的彈出式對話框

我想要改爲: 5.用戶仍在查看他們所在的任何應用程序,但他們現在有我的彈出對話框。

如何在不將我的應用程序放在前面的情況下調用該活動?

+0

不知從何處出現一個彈出是不好的用戶體驗。您應該改用通知。 – Luksprog 2012-04-22 17:10:10

+0

這是我的應用程序中完全不同的場景。如果用戶選擇報警,那麼我認爲彈出通知以及聲音/振動將是適當的,就像內置的報警應用程序一樣。也許我可以看看源代碼,看看Alarm應用程序如何處理它? – pcm2a 2012-04-22 19:43:53

+0

你不能從'BroadcastReceiver'開始對話。你可以有一個對話框主題的活動,而不是(在'BroadcastReceiver'中),所以你看起來像是一個對話框。 – Luksprog 2012-04-22 20:06:24

回答

0

Luksprog說的是真實的,但即使默認警報顯示一個AlertDialog時間對應於您的警報設置。 你可以把這個代碼到你的其他代碼,不會當你的報警器(S)開始它做什麼:

public void alertBtn1 (View v){ 
     new AlertDialog.Builder(this) 
      .setTitle("AlertDialog") 
      .setMessage(R.string.text OR "YOURTEXTHERE") 
    // If you want to the user to have multiple options, you can replace this 
      .setNeutralButton("YOURTEXTHERE", null) 
    // with this:    
      .setNeutralButton("YOURTEXTHERE", null) 
      .setPositiveButton("YOURTEXTHERE", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
    // finish(); or whatever you like to happen when the user clicks the button. 
        finish(); 
        } 
       }) 
      .show(); 

    } 
+0

爲了做到這一點,我不需要開始一項活動嗎?您可以在我的上述步驟中看到我啓動了一個活動節目,我可以顯示一個AlertDialog。問題是它提出了我的應用程序所在的最後一頁。我如何讓應用程序避免前來? – pcm2a 2012-04-22 19:42:42

+0

嗯...然後我不知道我怎麼能幫你,因爲我真的不知道。嘗試並試驗你的代碼。您可以參考另一個具有彈出AlertDialog代碼的類,並讓原始類/活動激活它。這樣,您在應用程序中的最後一頁將不會被提出。另外,你可以使用finish();終止該頁面並將您帶回到最後一頁。 – Kurty 2012-04-24 01:54:50