2012-09-20 22 views
5

Tôi gửi một mã số theo yêu cầu thông qua điều này để một người quản lý báo độngLấy requestcode từ broadcastReceiver báo

Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, broadcast_intent, PendingIntent.FLAG_UPDATE_CURRENT); 

tôi đã tự hỏi, rằng trong broadcastreceiver, làm thế nào tôi có thể truy xuất các requestcode (ROWID) mà tôi sử dụng để thiết lập pendingIntent?

Cảm ơn

+0

Chưa có câu trả lời? Comon – Snake

Trả lời

2

Tôi cũng đang tìm kiếm điều tương tự. Một cách sẽ là để vượt qua requestcode như thêm trong Intent của bạn.

intent.putExtra("requestcode", rowId); 

Tuy nhiên, nếu ứng dụng bị giết không có cách nào để lấy dữ liệu thông qua tiếp cận mục đích.

Vì vậy, bạn cần phải chuyển rowId dưới dạng URI và sử dụng Bộ lọc mục đích.

+0

Nếu ứng dụng bị giết, báo động vẫn sẽ bị thay đổi. Vì vậy, khi hết hạn, bạn vẫn sẽ có thể nhận được mã requets không? – Snake

+0

Không, báo thức vẫn được đăng ký nhưng dữ liệu bổ sung chứa trong Intent sẽ bị mất. Tôi đã thử nó. –

+0

ahh Tôi hiểu, bất kỳ giải thích nào về lý do đó – Snake

2
Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent,PendingIntent.FLAG_UPDATE_CURRENT 
          ); 

xuất sắc nhất sẽ được để vượt qua các tính năng bổ sung trong khi đề cập broadcast_intent trong getBroadcast() - broadcast_intent.putExtras("REQUESTCODE",rowId) ; như sau:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent.putExtras("REQUESTCODE",rowId), 
           PendingIntent.FLAG_UPDATE_CURRENT); 
2

Các requestCode sử dụng khi tạo một pendingIntent không có ý định để truyền lại cho người nhận, nó được thiết kế như một cách để ứng dụng tạo pendingIntent để có thể quản lý nhiều pendingIntents.

Giả sử ứng dụng báo thức cần thiết để tạo một số đối tượng đang chờ xử lý và sau đó cần phải hủy hoặc sửa đổi một trong số chúng. Mã requestCode được sử dụng để xác định cái nào cần hủy/sửa đổi.

Để chuyển dữ liệu, hãy sử dụng putExtra như được mô tả ở trên. Lưu ý bạn có thể rất muốn sử dụng RowId cho cả requestCode và dữ liệu Extra.

Các vấn đề liên quan