0

У меня эта проблема: я устанавливаю alarmManager с намерением и ожиданием ответа, если некоторые условия удовлетворяются, добавьте некоторые дополнительные функции в намерение. Проблема заключается в том, что мой приемник не читать мои статистов:Мой получатель не получает намерения

Набор alarmManager в MainActivity:

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    Intent i = new Intent(MainActivity.this, AlarmReceiver.class); 
    PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this , 0, i, PendingIntent.FLAG_ONE_SHOT); 

     // conditions 
        i.putExtra("type", 1); 
        i.putExtra("mealType", 2); 
        Log.d(TAG , "type: " + i.getExtras().getInt("type")); 
        Log.d(TAG , "mealtype: " + i.getExtras().getInt("mealType")); 
        calendar.set(calendar.HOUR_OF_DAY, 7); 
        am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi); 

И в LogCat я могу увидеть:

D/MAIN: type: 1 
D/MAIN: mealtype: 2 

Но в моем приемнике:

public void onReceive(Context context, Intent intent) { 

    /** 
    * Receiver 
    */ 
    Log.d(TAG, "Allarme ricevuto dal receiver"); 

    int type = intent.getExtras().getInt("type"); 
    Log.d(TAG , "type: " + type); 
    Log.d(TAG , "mealtype: " + intent.getExtras().getInt("mealType")); 
    Log.d(TAG , "unExisted: " + intent.getExtras().getInt("unExisted")); 



    if(type == 0){ 
     Intent service = new Intent(context, AlarmService.class); 
     service.putExtra("type", type); 
     context.startService(service); 
    } 

    if(type == 1){ 
     int mealType = intent.getExtras().getInt("mealType"); 

     Intent service1 = new Intent(context, AlarmService.class); 
     service1.putExtra("type", type); 
     service1.putExtra("mealType", mealType); 
     context.startService(service1); 
    } 
} 

Я вижу это:

D/ALARM RECEIVER: Allarme ricevuto dal receiver 
D/ALARM RECEIVER: type: 0 
D/ALARM RECEIVER: mealtype: 0 
D/ALARM RECEIVER: unExisted: 0 

Я вижу all'key как 0 и вижу, как 0 "unExistest" тоже, я никогда не вставляю этот ключ в намерение. Зачем?

ответ

1

Перед созданием необходимо установить дополнительные функции Intent.

Пример:

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent i = new Intent(MainActivity.this, AlarmReceiver.class); 
i.putExtra("type", 1); 
i.putExtra("mealType", 2); 
PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this , 0, i, PendingIntent.FLAG_ONE_SHOT); 
calendar.set(calendar.HOUR_OF_DAY, 7); 
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi); 
+0

большое спасибо, я не считаю, что это было так просто. – BeginnerNub

 Смежные вопросы

  • Нет связанных вопросов^_^