【发布时间】:2016-02-19 06:36:53
【问题描述】:
我刚开始在我的 android 应用程序中为用户设置未来通知 在使用警报管理器设置通知的特定日期调用服务类时,我没有收到 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" />
在服务类的最后,我无法获取消息字符串。
【问题讨论】:
-
你的接收者叫..???
-
是的,一切正常,我可以在服务上调试到 onStartCommand,但没有找到额外功能。
-
尝试捆绑传递并获取值..!!
-
尝试通过 Bundle 传递它,例如:Bundle b = new bundle(); b.putString("消息",eventNotificationMessage); myIntent.putExtras(b);并像这样检索它:intent.getStringExtras("message");
-
@ManishJain 您必须将消息传递给接收者??还是服务??
标签: android notifications alarmmanager extra