2016-02-19 48 views
0

我新设置用户在我的android应用程序的未来通知 我没有得到putExtra字符串,而服务类调用特定的日期通知设置使用alarmmanager。安卓putextra为未来的通知

活动类

utility.setInternalBroadcastNotification(*DYNAMIC_FUTUREDATE*, *DYNAMIC_MESSAGE*); 

工具类

public void setInternalBroadcastNotification(String eventAlertDateTime, String eventNotificationMessage) { 
    try { 
     if (!eventAlertDateTime.equalsIgnoreCase("") && !eventNotificationMessage.equalsIgnoreCase("")) { 
      Intent myIntent = new Intent(mContext, InternalBroadcastReceiver.class); 
      myIntent.putExtra("message", eventNotificationMessage); 

      PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, (int) System.currentTimeMillis(), myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

      Calendar calendar = new GregorianCalendar(getDefaultLocale()); 
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", getDefaultLocale()); 
      Date eventAlertTime = simpleDateFormat.parse(eventAlertDateTime); 
      calendar.setTime(eventAlertTime); 

      AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); 
      alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 
     } 
    } catch (Exception exception) { 
     exception.printStackTrace(); 
    } 
} 

InternalBroadcastReceiver延伸的BroadcastReceiver

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent intet = new Intent(context, InternalMessageHandler.class); 
intet.putExtra("message", intent.getStringExtra("message")); 
    context.startService(intet); 
} 

InternalMessageHandler延伸服务

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId); 

    String message = intent.getStringExtra("message"); 
return START_NOT_STICKY; 
} 

清单

<service android:name=".util.InternalMessageHandler" /> 

    <receiver android:name=".util.InternalBroadcastReceiver" /> 

在这里,在最后从服务类我不能得到的消息字符串。

+0

你的接收器叫..? – Nils

+0

是的,所有工作正常,我可以调试upto ** onStartCommand **服务,但没有发现额外。 –

+0

尝试捆绑传递并获取值..! – Nils

回答

0

因为消息已被添加到pendingIntent进行广播。并且当接收者被呼叫时,消息还没有被传递给InternalMessageHandler

@Override 
public void onReceive(Context context, Intent intent) { 
Intent intet = new Intent(context, InternalMessageHandler.class); 
intet.putExtra("message", intent.getStringExtra("message");); 
context.startService(intet); 
} 
+0

我想这一点,但在服务端@覆盖 \t公众诠释onStartCommand(意向意图,诠释标志诠释startId){ \t \t super.onStartCommand(意向,旗帜,startId); \t \t Bundle extras = intent.getExtras(); \t \t String message = intent.getStringExtra(“message”);临时演员和消息返回null –

+0

你是否在'onReceive()'中获得消息? – Pr38y

+0

是的,我的尝试与您之前的建议相同,但没有运气\ –