[英]BroadcastReceiver for CONNECTIVITY_ACTION always returns null in intent.getExtras()
[英]Intent.getExtras() always returns null
我正在嘗試通過通知和事件onCreate
運行一個活動,我想“重定向”。 為此,請在Intent
類中添加有關信息的想法。 一個重要的功能是生成通知的類是通過服務執行的。 我從android.app.Application
類提供的getApplicationContext
方法檢索上下文。 每當我調用getExtras()
方法返回null
。 我究竟做錯了什么?
public class OXAppUpdateHandler {
private void addNotification(Context context, int iconID,
CharSequence tickerText, CharSequence title, CharSequence content) {
CharSequence notificationTicket = tickerText;
CharSequence notificationTitle = title;
CharSequence notificationContent = content;
long when = System.currentTimeMillis();
Intent intent = new Intent(context, MainActivity_.class);
intent.setFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(OPEN_UPDATE_ACTIVITY_KEY, 1);
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, intent, 0);
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(
Context.NOTIFICATION_SERVICE);
Notification notification =
new Notification(iconID, notificationTicket, when);
notification.setLatestEventInfo(context, notificationTitle,
notificationContent, pendingIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
}
public static boolean isUpdateStart(Intent intent) {
Bundle bundle = intent.getExtras();
boolean result = bundle != null &&
bundle.containsKey(OPEN_UPDATE_ACTIVITY_KEY);
if (result) {
bundle.remove(OPEN_UPDATE_ACTIVITY_KEY);
}
return result;
}
}
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (OXAppUpdateHandler.isUpdateStart(getIntent())) {
startActivity(new Intent(this, UpdateActivity_.class));
}
}
}
我要往窗外傾斜,猜想你的問題在這里:
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
您正在將intent
傳遞給getActivity()
並期望您將返回一個與您的Intent
相匹配並包括其他內容的PendingIntent
。 不幸的是,如果系統中已經存在一個與您的Intent
相匹配的PendingIntent
( 不考慮您的Intent
額外getActivity()
),那么getActivity()
會返回給您該PendingIntent
。
要查看是否是問題所在,請嘗試以下操作:
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
這就是說,如果系統中某處已經有一個與您的Intent
相匹配的PendingIntent
,則應使用intent
參數中的多余項替換這些多余項。
(1) 在此處檢查以確保您正確使用了put / get臨時演員,因為我看不到要在其中添加數據的代碼。
(2)看來您不是在打電話獲取意圖和獲得額外的東西,結果實際上並沒有從捆綁中得到任何東西(假設信息存在)。 如果要檢查布爾值,則應按以下方式獲取放置在分發包中的數據:
Bundle bundle = getIntent().getExtras();
if (bundle.getBooleanExtra("WHATEVER"){
//whatever you want to do in here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.