0

我從MainActivity類發出通知。當用戶點擊通知時,我想返回到MainActivity類和執行方法。我也想知道哪個通知被點擊(假設我用不同的id發出多個通知)。在這裏我做了什麼,並沒有奏效點擊通知後的接收信號

MainActivity.class

private void showNotification(String title, String message, int id) { 
    NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle(title) 
      .setContentText(message); 

    Intent resultIntent = new Intent(this, MainActivity.class); 
    resultIntent.setAction("mAction"); 
    PendingIntent resultPendingIntent = PendingIntent.getBroadcast(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    mBuilder.setContentIntent(resultPendingIntent); 
    NotificationManager mNotificationManager = 
     (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(id, mBuilder.build()); 
} 

相同的內徑MainActivity.class我創建了一個BroadcastReceiver類,但它從來沒有得到所謂的

public class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 

     if(action.equals("mAction")) { 
       //execute my method here 
     } 
    }   

} 

我沒加MyBroadcastReceiver.class接收器AndroidManifest.xml

<receiver android:name=".MyBroadcastReceiver" > </receiver> 
+0

有你加入動作字符串給

+0

''我做了什麼,我還應該添加什麼? – laph

+1

當用戶點擊通知他/她將被帶到MainActivity ..什麼讓你認爲你的'BroadcastReceiver'將被調用。 活動將被創建,您可以在MainActivity的'onCreate'中看到'mAction' .. – Varun

回答

0

至於@Varun的建議,這裏如何解決我的問題。

showNotification我更換.setAction.putExtra和更改.getBroadcast.getActivity

Intent resultIntent = new Intent(this, MainActivity.class);   
    resultIntent.putExtra("mAction", id); // put id here you know which notification clicked 
    PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); // change getBroadcast to getActivity 

不再需要MyBroadcastReceiver類,而不是我在onCreate()添加一些行獲得意圖的結果:

if(getIntent().hasExtra("mAction")){ 
     Bundle extra = getIntent().getExtras(); 
     int id = extra.getInt("mAction"); 
     if(id == 1) { 
      //do stuff 
     } 
    }