2014-11-24 62 views
1

我正通過PendingIntent從GCMIntentService發送一個意向。我在intent中插入一些字符串,並在PendingIntent中調用一個將接收意圖的活動。但數據不是我發送的。這是截圖。 enter image description here意圖未正確投遞

示出的第一意圖就是我發送,並且所述第二就是我接收。這裏是發送代碼:

Intent intent = new Intent(getBaseContext(), 
          Group_Chat_MainActivity.class); 
        intent.putExtra("group_id", group_id); 
        intent.putExtra("group_title", name); 
        intent.putExtra("from_push", true); 
        PendingIntent pendingIntent = PendingIntent.getActivity(
          getBaseContext(), 100, 
          intent, 0); 
Notification notification = new NotificationCompat.Builder(
          getBaseContext()).setContentTitle("Paisa Swipe") 
          .setContentText(msg) 
          .setSmallIcon(R.drawable.home_logo) 
          .setTicker(ticker) 
          .setDefaults(Notification.DEFAULT_ALL) 
          .setWhen(System.currentTimeMillis()) 
          .setContentIntent(pendingIntent) 
          .setAutoCancel(true).build(); 

        notificationManager.notify(Integer.parseInt(group_id), 
          notification); 

當我點擊通知,它發送到Group_Chat_MainActivity類。在這方面,我使用getIntent()來獲取意向數據:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.chat_activity_main); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    getIntent().getStringExtra("group_title") 
    getIntent().getStringExtra("group_id") 
    getIntent().getBooleanExtra("from_push",false) 
    } 

在這裏我得到我送那麼什麼不同的字符串。有任何想法嗎?

+0

你確定你的'getBaseContext()'不爲空?這段代碼是在一個片段? – 2014-11-24 13:36:49

+0

其中一個你得到錯誤的值 – 2014-11-24 13:37:59

+0

@NoName group_title它正在返回奇怪的值「test group」。我搜索了我的整個項目,即使在代碼或xmls中也沒有名爲「test」的字符串:P – Prince 2014-11-24 13:39:01

回答

1

其實問題是你的PendingIntent requestCode始終是相同的,即100.保持它對於例如一個組是唯一的。你的group_id。而且,這裏的背景應該是你GCMIntentService context.Try改變這

PendingIntent pendingIntent = PendingIntent.getActivity(
         getBaseContext(), 100, 
         intent, 0); 

PendingIntent pendingIntent = PendingIntent.getActivity(
         yourContextHere, Integer.parseInt(group_id), 
         intent, 0); 
0

確保您的getBaseContext()不爲空。
如果你用它在Fragmnet嘗試:

inflatedview.getContext(); 

代替:

getBaseContext() 

,當你想在OnCreate方法從你的意圖獲得價值,試試這個:

getIntent().getExtras().getString(); 

而不是:

getIntent().getStringExtra(); 

希望這對你有所幫助。

+0

首先,它是一種服務,而不是一些視圖。其次,取消getIntent()。getExtras()。getString()。 – Prince 2014-11-24 13:50:58

+0

@Prince我用'If'語句提到它,你能解釋我還是提供你所說的任何鏈接:「** getIntent()。getExtras()。getString()被取消。** – 2014-11-24 13:54:18