【问题标题】:android putextra for future notificationandroid putextra 用于将来的通知
【发布时间】: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


【解决方案1】:

因为消息已添加到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);
}

【讨论】:

  • 我试过这个,但是在服务端 @Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId);捆绑附加服务 = intent.getExtras();字符串消息 = intent.getStringExtra("message"); extras 和消息返回 null
  • 你收到onReceive()的消息了吗?
  • 是的,我按照你之前的建议尝试过,但没有运气\
  • 任何帮助请...!?!
  • 是的,我只是更改了 InternalMessageHandler extends IntentService@Override protected void onHandleIntent(Intent intent) {} 上的附加功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多