[英]put and get Broadcast Receiver
如何獲得我放入廣播接收器的值? 請幫我
在我的活動中
public static void startActivity(Context context) {
//what can i put here?
}
意向服務
intent.putExtra("DriversID", 1351351);
sendBroadcast(intent);
我的廣播接收器
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String DriversID = null;
if (bundle != null) {
DriversID = bundle.getString("DriversID");
Toast.makeText(context, "DriversID", Toast.LENGTH_LONG).show();
}
Intent i = new Intent(context, DashboardActivity.class);
i.putExtra("getDriversID", DriversID);
context.startActivity(i);
ComponentName comp = new ComponentName(context.getPackageName(),
GcmIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
這是確切的場景,當 GCM 通知我時,我將從 inten 獲取消息並將其發布到廣播,然后活動將獲取消息的值,怎么樣?
您可以在您的活動中創建一個 BroadcastReciever:
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
// String message = intent.getStringExtra("message");
// do other stuff here
}
};
然后你應該在你的活動中注冊(例如在 onResume 中):
this.registerReceiver(mMessageReceiver, new IntentFilter("unique_name"));
並記住取消注冊(在 onPause 中,選擇適合您需要的任何內容):
protected void onPause() {
super.onPause();
this.unregisterReceiver(mMessageReceiver);
}
要發送數據,您可以使用:
Intent intent = new Intent("unique_name");
// put whatever data you want to send, if any
// intent.putExtra("message", "some data");
// send broadcast
context.sendBroadcast(intent);
}
這會做。 為意圖設置一個動作並發送廣播。
intent.setAction(action);
並檢查接收器中的動作以找到意圖
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(action))
String DriversID = intent.getStringExtra("DriversID");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.