Tôi có thể tìm cách gửi tham số cho hoạt động của mình từ thông báo của mình.
Tôi có một dịch vụ tạo ra một thông báo. Khi người dùng nhấp vào thông báo, tôi muốn mở hoạt động chính của mình với một số thông số đặc biệt. Ví dụ: id mục, vì vậy hoạt động của tôi có thể tải và hiển thị chế độ xem chi tiết mục đặc biệt. Cụ thể hơn, tôi đang tải xuống một tệp và khi tệp được tải xuống, tôi muốn thông báo có ý định rằng khi nhấp vào, nó sẽ mở hoạt động của tôi ở chế độ đặc biệt. Tôi đã cố gắng sử dụng putExtra
vào mục đích của mình, nhưng dường như không thể trích xuất nó, vì vậy tôi nghĩ rằng tôi đang làm sai.
Mã từ dịch vụ của tôi tạo Thông báo:
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
Mã từ Hoạt động của tôi cố gắng tìm nạp tham số bổ sung từ thông báo:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + extras.getString("item_id") );
}
Các tính năng bổ sung luôn là null và tôi không bao giờ nhận được bất cứ điều gì vào nhật ký của mình.
Btw ... onCreate
chỉ được chạy khi hoạt động của tôi bắt đầu, nếu hoạt động của tôi đã bắt đầu, tôi cũng muốn thu thập các tính năng bổ sung và trình bày hoạt động của mình theo mục_id tôi nhận được.
Có ý kiến gì không?
PendingIntent.getActivity()
bằng cờPendingIntent.FLAG_UPDATE_CURRENT
, nếu không các tính năng bổ sung tương tự sẽ được sử dụng lại cho mỗi thông báo.