Android 悬而未决的是,尽管有旗帜,但不派额外人员

Android 悬而未决的是,尽管有旗帜,但不派额外人员,android,android-intent,android-pendingintent,Android,Android Intent,Android Pendingintent,我的悬挂式帐篷没有携带额外的服务,尽管我在意图或悬挂式帐篷本身上挂了旗帜 DrawerActivity.class: @Override public void registerAlarmTask(Calendar time, String title, int iconId) { int requestId = (int) System.currentTimeMillis(); Intent intent = new Intent(this, AlarmReceiver.c

我的悬挂式帐篷没有携带额外的服务,尽管我在意图或悬挂式帐篷本身上挂了旗帜

DrawerActivity.class:

@Override
public void registerAlarmTask(Calendar time, String title, int iconId) {

    int requestId = (int) System.currentTimeMillis();

    Intent intent = new Intent(this, AlarmReceiver.class);
    intent.putExtra("title",title);
    intent.putExtra("icon", iconId);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.setAction("alarm");
    PendingIntent pIntent = PendingIntent.getBroadcast(this, requestId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);

    Calendar newTime = Calendar.getInstance();
    newTime.set(Calendar.MINUTE, time.get(Calendar.MINUTE)-1);

    alarm.set(AlarmManager.RTC_WAKEUP, newTime.getTimeInMillis(), pIntent);
    Log.w(TAG, "Alarm created! " + newTime.toString());
}
以及NotificationService中的StartCommand方法:

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

        NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this);
        Log.w(TAG, "Icon ID: " + intent.getIntExtra("icon", 404) + " / Title: " + intent.getStringExtra("title"));
        nBuilder.setSmallIcon(intent.getIntExtra("icon", R.drawable.ic_event_new));
        nBuilder.setContentTitle(intent.getStringExtra("title"));
        nBuilder.setContentText("A partida irá começar em instantes...");
        nBuilder.setTicker("Sua partida no Destiny está prestes a começar!");
        nBuilder.setAutoCancel(true);

        NotificationManager nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        nManager.notify(0, nBuilder.build());

    Log.w(TAG, "Notification Service started!");
    Toast.makeText(this, "Notification Service started!", Toast.LENGTH_SHORT).show();

    return super.onStartCommand(intent, flags, startId);
}
无论我放置的requestId、intent标志或PendingEvent标志是什么,来自intent的额外内容总是空的

有没有关于我做错了什么的提示?我找了很多,但没有找到答案

问候,,
Lucas Sene

正如Mike M.在评论中所说,我只是忘记了将额外的意图从广播接收器传递到服务。是的,一个愚蠢的错误


谢谢大家的评论

正如Mike M.在评论中所说,我只是忘记了将额外的意图从广播接收器传递给服务。是的,一个愚蠢的错误


谢谢大家的评论

我也有同样的问题,为了让它工作,我的头撞了墙一段时间。据说有一些标志可以在挂起的意图上启用,但它们永远不会对我正常工作,尽管有文档记录。相反,我最终使用了一个本地SQLLite数据库,因为我无法通过提供的方法让PendingEvent正确地发送数据。但愿我能为您提供一个更技术性的答案,祝您好运。您的
PendingEvent
正在向
广播接收器
广播,您大概正从该接收器开始您的
服务
。发送给接收者的
Intent
附加的额外内容需要附加到用于启动
服务的
Intent
。它们不会自动转发给你。我也有同样的问题,为了让它正常工作,我的头撞了墙一段时间。据说有一些标志可以在挂起的意图上启用,但它们永远不会对我正常工作,尽管有文档记录。相反,我最终使用了一个本地SQLLite数据库,因为我无法通过提供的方法让PendingEvent正确地发送数据。但愿我能为您提供一个更技术性的答案,祝您好运。您的
PendingEvent
正在向
广播接收器
广播,您大概正从该接收器开始您的
服务
。发送给接收者的
Intent
附加的额外内容需要附加到用于启动
服务的
Intent
。它们不会自动为您转发。