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 
     } 
    }