0

我正在实现一个 sdk,当用户单击通知时,某些活动将被打开。我只是想知道如何在意图上传递不同的 - 不同的活动。这是我的示例代码:-

void fireNotification(Context _context, String appname,
            String appdescription) {

        Intent resultIntent = new Intent(_context, ResultActivity.class);
        try {

            PendingIntent contentIntent = PendingIntent.getActivity(_context,0, resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);

            mBuilder = new NotificationCompat.Builder(_context);
            }

请建议我如何在意图中传递不同的活动。

4

3 回答 3

0

我假设您想加载另一个 Activity 而不是 ResultActivity,您可以将 ResultActivity.class 更改为另一个 Activity 的类名。

如果您希望能够在用户点击通知后确定要加载的活动,您可以创建一个新的活动来确定启动后要加载的活动,有点像“重定向”屏幕的活动。

于 2013-08-26T05:55:31.077 回答
0

尝试这个..

void fireNotification(Context _context, String appname,
            String appdescription) {

        Intent resultIntent = null;

        if(something)
             resultIntent = new Intent(_context, SomeActivity1.class);
        else
             resultIntent = new Intent(_context, SomeActivity2.class);

        try {

            PendingIntent contentIntent = PendingIntent.getActivity(

            _context,

            0,

            resultIntent,

            PendingIntent.FLAG_UPDATE_CURRENT);

            mBuilder = new NotificationCompat.Builder(

            _context);

}
于 2013-08-26T05:56:56.223 回答
0

这是我用来创建通知的一些代码。它使用 v4 兼容性库。如您所见,如果要更改要启动的 Activity,则必须重新创建 PentingIntent。像我所做的那样取消和重新发布意图并没有错。如果您没有允许票文本用户可能甚至不会注意到它。另外,请注意,我知道兼容性构建器允许您分配自定义视图,但这每次都会对我崩溃,直接分配它似乎更稳定。

public static void setupNotification(Context context) {
    if (mNotificationManager == null) {
        mNotificationManager = (NotificationManager) context.getSystemService(Service.NOTIFICATION_SERVICE);
    }
    mNotificationManager.cancel(R.layout.main);
    int icon = R.drawable.ic_stat_notify_connected;
    String tickerText = context.getString(R.string.TickerText);
    createNotification(context, tickerText, icon);
    mNotificationManager.notify(R.layout.main, mNotification);
}

private static void createNotification(Context context, String tickerText, int icon) {
    Intent notificationIntent = new Intent();
    notificationIntent = new Intent(context, NotificationOptionsActivity.class);

    String contentTitle = context.getString(R.string.MessageTitle);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    if (mNotification == null) {
        mNotification = new NotificationCompat.Builder(context.getApplicationContext()).setContentTitle(contentTitle).setSmallIcon(icon).setContentIntent(contentIntent).build();

        mNotification.flags |= Notification.FLAG_ONGOING_EVENT;

        RemoteViews contentView = new RemoteViews(context.getApplicationContext().getPackageName(), R.layout.notification_custom_layout);
        mNotification.contentView = contentView; 
    } else {
        mNotification.contentIntent = contentIntent;
    }
}

注意:您必须使用Intent.FLAG_ACTIVITY_NEW_TASK其他任何方法都行不通。如果您没有自定义视图,则可以删除自定义视图的代码。

如果您确实有自定义视图,则可以在其中设置值,如下所示:

    mNotification.contentView.setTextViewText(R.id.noti_user, user);
    //default image
    mNotification.contentView.setImageViewResource(R.id.noti_image, R.drawable.ic_user_icon);
于 2013-08-26T05:57:03.273 回答