30

当通过 AlarmManager 启动服务时,我使用以下代码启动通知:

nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence from = "App";
CharSequence message = "Getting Latest Info...";
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(), 0);
Notification notif = new Notification(R.drawable.icon,
    "Getting Latest Info...", System.currentTimeMillis());
notif.setLatestEventInfo(this, from, message, contentIntent);
nm.notify(1, notif);

如何为这个项目设置一个意图,以便当用户点击它时,它会启动某个活动?

4

3 回答 3

31

至于yoshi24的评论,你也许可以像这样设置额外的东西。

final Intent intent = new Intent(this, MyActivity.class);
intent.setData(data);
intent.putExtra("key", "value");
final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

在处理未决意图之前,您也需要了解这一点

https://stackoverflow.com/questions/1198558/how-to-send-parameters-from-a-notification-click-to-an-activity

更新 这样的事情对你有用

在你的主要节日

<activity android:name=".MyActivity" android:launchMode="singleTop" ... />

在你的活动中

@Override
protected void onCreate(Bundle savedInstanceState) {
    processIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {     
    processIntent(intent);
};

private void processIntent(Intent intent){
    //get your extras
}
于 2011-08-25T04:30:56.827 回答
24

您基本上需要将 Activity 类作为您的意图的一部分放入您的 PendingIntent。目前你的 Intent 是空的。要重定向到新活动,它应该是:

// This line of yours should contain the activity that you want to launch. 
// You are currently just passing empty new Intent()
PendingIntent contentIntent = 
    PendingIntent.getActivity(this, 0, new Intent(this, MyActivity.class), 0);

于 2011-08-25T04:08:09.983 回答
9

我做的,

  • 我添加Intent.FLAG_ACTIVITY_CLEAR_TOP到新的意图

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.ic_launcher,
            "A new notification", System.currentTimeMillis());
    // Hide the notification after its selected
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    
    Intent intent = new Intent(this, NoficationDemoActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    Bundle bundle = new Bundle();
    bundle.putString("buzz", "buzz");
    intent.putExtras(bundle);
    PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0);
    notification.setLatestEventInfo(this, "This is the title",
            "This is the text", activity);
    notification.number += 1;
    notificationManager.notify(0, notification);
    
  • Oncreate 我做如下:

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    if(getIntent().getExtras()!=null){
        Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show();
    }
    
于 2012-05-30T03:19:00.090 回答