2012-05-23 28 views
0

在我的android我的應用程序,我可以報警功能,以及註銷功能。設置我的鬧鐘時間後,我退出應用程序通過單擊註銷按鈕。如何在沒有任何活動的背景下彈出報警消息?

我使用

  ExitActivity.this.finish(); 
     Intent intent1 = new Intent(ExitActivity.this,PinActivity.class); 
     intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent1); 

     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 

這個代碼退出應用程序,都到家裏引腳屏幕之後,它啓動主屏幕。這是因爲當我回到我的應用程序時,它會啓動屏幕。報警工作正是我想要的,但當報警彈出消息時,它具有背景中的pinactivity(我不想)。我不想擺脫背景中的pin活動。

這是我的接收器類嗎?

 public class ShortTimeEntryReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 

    Toast.makeText(context,"Alarm Working", Toast.LENGTH_SHORT).show(); 

    try { 
     Bundle bundle = intent.getExtras(); 
     String message = bundle.getString("alarm_message"); 

     Intent newIntent = new Intent(context, ReminderPopupMessage.class); 
     newIntent.putExtra("alarm_message", message); 
     newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(newIntent); 
     } catch (Exception e) { 
     Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 

     } 
} 

我該怎麼做? 感謝您的幫助..

回答

3

您應該使用Alarm Manager在Android中設置鬧鐘。警報管理員持有您的警報並在警報時間觸發待定的意圖。

首先創建一個懸而未決的意圖是這樣的:

pendingIntent = PendingIntent.getService(CONTEXT, ALARM_ID, INTENT_TO_LAUNCH, 0); 

然後用這個懸而未決的意圖設置鬧鐘這樣的:

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP, ALARM_TIME, pendingIntent); 

這將啓動在給定時間掛起的意圖。

要刪除警報,你必須重新創建具有相同ALARM_ID相同掛起意圖:

alarmManager.cancel(pendingIntent); 
+0

其實我已經做了這..那就是我現在正在做的,但問題是,當我看到最後使用的屏幕上我最不需要的報警彈出消息... – GoCrazy

+0

那麼爲什麼你不完成當警報彈出時你的pin活動? –

+0

那是什麼問題..是否有可能關閉另一項活動的活動.. – GoCrazy

1

首先創建一個懸而未決的意圖是這樣的:

pendingIntent = PendingIntent.getService(context, alarm_id, Pass your data with intent, PendingIntent.FLAG_UPDATE_CURRENT); 

設置報警這樣的:

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     //19 4.4and above api level 
     am.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() + AlarmManager.INTERVAL_DAY, sender); 
} else { 
     //below 19 4.4 
     am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() + AlarmManager.INTERVAL_DAY, sender); 
} 

這將在給定時間開始等待的意圖。

要刪除則必須使用與同ALARM_ID相同掛起意向報警:

am.cancel(pendingIntent); 

現在你需要創建一個服務來抓住你的報警。

+0

請投票我的答案,如果它真的有幫助。 –