2017-01-24 2 views
0

Wenn ich versuche, den Rundfunkempfänger über den Alarm anzurufen, erhalte ich die Null-Aktion.NULL-Aktion in der Sendung erhalten Empfänger

String action = k2.getAction(); 

Aktion null erhalten.

Wie kann ich die AlarmReceiver nenne:

@SuppressLint("NewApi") 
    private void setAlarm(String remCategory,Calendar calNow, Context context, int request_code) { 

     init(context); 
     Log.i("Inside setAlarm,","Yes"); 

     Log.i("setAlarm Category",remCategory); 
     Intent intent = new Intent(context, AlarmReceiver.class); 
     intent.putExtra("Rem_cat",remCategory); 
     intent.putExtra("Rem_calling_class",UpdateTables.this.getClass().getSimpleName()); 

     long alarmtime=calNow.getTimeInMillis(); 

     System.out.println("Reminder Time is "+calNow.get(Calendar.HOUR_OF_DAY)+" "+calNow.get(Calendar.MINUTE)); 
     Log.i("Target",Long.valueOf(alarmtime).toString()); 

     //final int _id = (int) System.currentTimeMillis(); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, request_code, intent, PendingIntent.FLAG_ONE_SHOT); 

     int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
     if (currentapiVersion < android.os.Build.VERSION_CODES.KITKAT){ 
      alarmManager.set(AlarmManager.RTC_WAKEUP, alarmtime, pendingIntent); 
     } else { 
      if (currentapiVersion < android.os.Build.VERSION_CODES.M) { 
       alarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmtime, pendingIntent); 
      } else { 
       alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmtime, pendingIntent); 
      } 
     } 
    } 

Alarm Receiver

public class AlarmReceiver extends BroadcastReceiver { 

    public String TAG=AlarmReceiver.this.getClass().getSimpleName(); 
    @Override 
    public void onReceive(Context k1, Intent k2) { 
     // TODO Auto-generated method stub 

     Log.i("Alarm Received","Yes"); 

     String action = k2.getAction(); 

     String reminder_cat=k2.getExtras().getString("Rem_CAT"); 
     String calling_class=k2.getExtras().getString("Rem_calling_class"); 

     Calendar calendar=Calendar.getInstance(); 

     System.out.println(TAG+ calendar.getTime()); 
     System.out.println(TAG+" calling class "+calling_class); 
     Intent i=new Intent(k1,AlertDialogActivity.class); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     i.putExtra("Rem_CAT",reminder_cat); 

     Log.d(TAG,reminder_cat); 
     k1.startActivity(i); 
    } 

} 

Manifest: nicht das gleiche

<receiver android:name=".AlarmReceiver" 
      android:enabled="true" 
      android:process=":remote"> 

      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 

     </receiver> 
+0

Können Sie Ihre Manifest-Deklarationen posten? –

+0

Ich habe die Manifest-Deklaration für die alarmReceiver-Klasse hinzugefügt @nickfriskel –

+0

hey @nickfriskel Ich habe weiter debug den Code und fand heraus, dass ich die Null-Aktion in AlarmReceiver Broadcast-Empfänger bekomme. –

Antwort

0

In Ihrem AlarmReceiver sind die Schlüsselwerte abgerufen werden.

Ändern Sie diese Zeile:

String reminder_cat=k2.getExtras().getString("Rem_CAT"); 

dazu:

String reminder_cat=k2.getExtras().getString("Rem_cat"); 

Dies sollten Sie die richtige Absicht Extras erhalten lassen und wird der Empfänger erlauben, nicht zu versagen.

Verwandte Themen