2013-07-17 52 views
0

我有一個需要啓動和停止活動的應用程序。顯然我的意圖沒有交付

到目前爲止,我們還沒有開始活動。

當我嘗試停止活動時,問題就出現了。

這是AlarmManager是廣播意圖關閉活動:

 Intent ftue = new Intent(ctxt, VideoActivty.class); 
     ftue.putExtra("finish", true); 
     PendingIntent pftue = PendingIntent.getBroadcast(ctxt, 0, ftue, 0); 
     Calendar calSet4 = Calendar.getInstance(); 
     calSet4.set(Calendar.MONTH, c.get(Calendar.MONTH)); 
     calSet4.set(Calendar.YEAR, c.get(Calendar.YEAR)); 
     calSet4.set(Calendar.DAY_OF_WEEK, 3); 
     calSet4.set(Calendar.HOUR_OF_DAY, hftue); 
     calSet4.set(Calendar.MINUTE, mftue); 
     calSet4.set(Calendar.SECOND, 0); 
     calSet4.set(Calendar.MILLISECOND, 0); 

     //calSet.setTimeZone(TimeZone.getTimeZone("UTC")); 
     mgr.setRepeating(AlarmManager.RTC_WAKEUP, calSet4.getTimeInMillis(), 
       7 * 24 * 60 * 60 * 1000, pftue); 

在我Activty我實現了一個廣播接收器應該關閉Activty。

但沒有成功......

@Override 
public void onResume() { 
super.onResume(); 
IntentFilter f=new IntentFilter(); 
registerReceiver(receiver, f); 
} 


@Override 
public void onPause() { 
unregisterReceiver(receiver); 
super.onPause(); 
} 

BroadcastReceiver receiver=new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     Log.e("","intento ricevuto"); 
     if(intent.getBooleanExtra("finish",false))finish(); 

    } 
}; 
+0

什麼是您的日誌貓?是intento ricevuto? – yarian

+0

@yarian nope ... –

+0

你的'IntentFilter'是空的,這意味着它不會傳送任何廣播給你的活動。 – yarian

回答

1

讓我打我的評論的答案,並闡述就可以了。

如果您使用空的IntentFilter,您的活動將永遠不會收到廣播給它的任何Intents。但是,如果您的廣播意圖特別引用某種類型的BroadcastReceiver,那就行了。

因此,如果你定義的類MyReceiver extends BroadcastReceiverVideoActivity內,然後形成廣播意圖作爲new Intent(context, VideoActivity.MyReceiver.class)交付。

希望是有道理的。

+0

謝謝,這是完全有道理的。請問我該如何放置過濾器來獲得某些東西? –

+0

這應該解釋如何去做。 http://www.sohailaziz.com/2012/05/broadcast-receiver-two-ways-to.html – yarian

+0

非常感謝你,我明白了,但請在這種情況下,我應該在我的過濾器中放什麼? –