2010-09-16 16 views
13

kayboldu Alarm programım ve BroadcastReceiver sınıfı (AReceiver.java adında) kullanılarak programıma bazı temel alarm işlevselliği ekliyorum. Benim sorunum, PendingIntent'i yaratan Niyet'e eklenmiş olan pakete eklediğim verilerin kaybolmuş gibi görünmesidir. AReceiver sınıfında erişebileceğim tek paket verileri bir android.intent.extra.ALARM_COUNT = 1. Burada Bir Yayın Alıcısına PendingIntent ile Bundle gönderirken sorun oluştu, veriler

niyet oluşturma ana faaliyet sınıfında temel kodu, PendingIntent ve AlarmManager: [ana faaliyet kod - Notepadv3]

Intent intent = new Intent(Notepadv3.this, AReceiver.class);   
intent.putExtra("teststring","hello, passed string in Extra");    
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0);  
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);   
am.set(AlarmManager.RTC_WAKEUP, timeOfNextPeriod.getTimeInMillis(), alarmIntent); 

[BroadcastReceiver kod - AReceiver]

public void onReceive(Context con, Intent arg1) { 
Bundle extrasBundle = arg1.getExtras(); 
Log.d("broadcast","contains teststring = " + extrasBundle.containsKey("teststring")); 
Log.d("broadcast","is empty? = " + extrasBundle.isEmpty()); 
Log.d("broadcast","to string = " + extrasBundle.toString()); 
    } 

Hata ayıklama iletileri, teststring'in FALSE olduğunu, boş olduğunu YANLIŞ olduğunu ve tüm paketi çıktılarken android.intent.extra.ALARM_COUNT = 1 değerini aldığını söylüyor.

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

Alkış, Tom

cevap

33

Bu hattını oluşturmak aksi veri

+0

teşekkür ederiz kaybolur bu

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

içine

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0); 

değiştirmek zorunda! Bu düzeltildi, doğru parametreleri almak için yüksek ve düşük arandı. Tekrar teşekkürler. –

+0

garip, android 4.0.3 öykünücüsü, hem 0 hem de PendingIntent.FLAG_UPDATE_CURRENT – max4ever

+2

AMA ile çalışır, ancak bunu yaptığınızda, herhangi bir * varolan * ekstradan OVERWRITES. Yeni ekler eklemek ve mevcut olanı korumak istiyorsak, işe yaramıyor. Normal olarak, bayraklar olarak 0 geçmesi, bunun çalışmasına neden olur (örneğin, AlarmManager'la zamanlamak yerine PendingIntent üzerinde arama yapılıyorsa). Ne verir? – Michael

İlgili konular