2016-02-19 50 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

是的,我的嘗試與您之前的建議相同,但沒有運氣\ –