BroadCast接收器不正确的值

时间:2018-06-09 16:12:00

标签: android

我正在创建Android中的通知和操作按钮,但是存在一个问题

  

intent.getIntExtra(" task_id", - 1);

总是返回10,无论我在该意图中插入什么值,我总是得到10,我不知道我的代码有什么问题。

这是代码

public class Alarm extends BroadcastReceiver {

final String NOTIFICATION = "notification";
final String ALARM = "alarm";
final String TYPE = "type";
public final String TASK_ID = "task_id";

private void log(String log) {

    Log.e("alarmget", log + "");
}

@Override
public void onReceive(Context context, Intent intent) {

    int id = intent.getIntExtra(TASK_ID, -1);
    final String type = intent.getStringExtra(TYPE);
    buildNotificationWithId(id, context);

}


private void buildNotificationWithId(final int task_id, Context context) {


    final DatabaseHandler db = new DatabaseHandler(context);
    Cursor c = db.getSingleTask(task_id);

    if (c != null && c.moveToFirst()) {

        final String msg_str = "This is my message";


        try {

            NotificationCompat.Builder b  = new NotificationCompat.Builder(context);
            if (b != null) {

                RemoteViews notificationLayout = new RemoteViews(context.getPackageName(), R.layout.activity_to_do_list_notification);
                notificationLayout.setTextViewText(R.id.notification_content, msg_str);
                notificationLayout.setTextViewText(R.id.notification_title,"Notif Title");


                Intent postponeIntent = new Intent(context, PostponeButtonListener.class);
                postponeIntent.putExtra(TASK_ID, task_id);
                PendingIntent pendingPostponeIntent = PendingIntent.getBroadcast(context, 0, postponeIntent, 0);
                notificationLayout.setOnClickPendingIntent(R.id.postpone, pendingPostponeIntent);


                final Uri notification_uri = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.notification);

                b.setSmallIcon(R.drawable.logo)
                        .setContent(notificationLayout)
                        .setStyle(new NotificationCompat.DecoratedCustomViewStyle())
                        .setCustomContentView(notificationLayout)
                        .setSound(notification_uri);

               NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
                nm.notify(task_id, b.build());
            }

        } catch (Exception e) {
            Log.d("alarmget", "" + e.getMessage());
        }

    }


}

public void setNotification(Context context, int id, Long alarm_time) {
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    Intent i = new Intent(context, Alarm.class);
    i.putExtra(TASK_ID, id);
    i.putExtra(TYPE, NOTIFICATION);

    PendingIntent pi = PendingIntent.getBroadcast(context, id, i, 0);
    am.set(AlarmManager.RTC_WAKEUP, alarm_time, pi);

}


}

使用上面的代码会显示通知,当我在下面的代码中点击通知中的PostPone按钮时,以下类中的日志显示&#34; 我是PostponeButtonListener 10 &#34; < / p>

public class PostponeButtonListener extends BroadcastReceiver {

String id = new Alarm().TASK_ID;

private void log(String log) {

    Log.e("PostponeButtonListener", log + "");
}

@Override
public void onReceive(Context context, Intent intent) {

    final long id = intent.getExtras().getInt(this.id);
    log("I am PostponeButtonListener   " + id);

}
}

0 个答案:

没有答案