我正在创建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);
}
}