将通知的文本和图像传递给点击事件中的另一个活动

时间:2016-04-06 19:21:15

标签: android android-intent notifications android-broadcast

首先,我尝试了堆栈溢出中提到的所有答案,但没有一个适用于我的应用程序,我知道它很简单,但我无法弄清楚它为什么不起作用。 所以我看到与你分享我的代码,以帮助我。 我正在API 22上运行。

这是activity,其中包含textView来接收通知中的文字。

public class EventDetails extends AppCompatActivity {
public static TextView txtDet;
public String strdet;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    onNewIntent(getIntent());
    setContentView(R.layout.activity_event_details);
    txtDet = (TextView) findViewById(R.id.txtDetail);
    Intent MyIntent = getIntent();
    strdet = MyIntent.getStringExtra("txtDetails");

    txtDet.setText(strdet);



}

我在点击日历日期时使用getStringExtra传递文字并且效果很好,所以我想使用相同的textView来接收通知文字,我没有使用其他问题textView,同时我希望每封通知都收到一个明确的image

这是通知activity,我的名字是AlertReceiver

    public class AlertReceiver extends BroadcastReceiver {


    @Override
    public void onReceive(Context context, Intent intent) {


        int notificationId  = intent.getIntExtra("id", -1);
        switch(notificationId){
            case 1:
                createNotification(context, "title1", "event1", "event of today");
                break;
            case 2:
                createNotification(context, "title2", "event2", "event of today");
                break;
            case 3:
                createNotification(context, "title3", "event3", "event of today");
                break;
            case 4:
                createNotification(context, "title4", "event4", "event of today");
                break;
        }


           }

    public void createNotification(Context context, String msg, String msgText,String msgAlert){

        PendingIntent notificIntent = PendingIntent.getActivity(context, 0, new Intent(context, EventDetails.class), 0);

        NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(context)
                .setSmallIcon(R.drawable.not)
                .setContentTitle(msg)
                .setTicker(msgAlert)
                .setContentText(msgText);
        //intent to fire when notification clicked on
       mBuilder.setContentIntent(notificIntent);
        //how the person will be notified
        mBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND);
        //cancel notification when clicked in the taskbar
        mBuilder.setAutoCancel(true);
        NotificationManager mNotificationManager= (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);

           mNotificationManager.notify(0, mBuilder.build());




    }
}

任何建议?

1 个答案:

答案 0 :(得分:1)

内部创建通知方法将数据添加到intent。您刚刚点击通知指定应该调用哪个活动。

像这样:

PendingIntent notificIntent = PendingIntent.getActivity(context, 0,
        new Intent(context, EventDetails.class).putExtra("txtDetails", yourMsg), 0);