如何使用通知打开活动

时间:2013-08-26 05:49:03

标签: android notifications

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

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

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

3 个答案:

答案 0 :(得分:0)

我假设您想要加载另一个Activity而不是ResultActivity,您只需将ResultActivity.class更改为另一个活动的类名。

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

答案 1 :(得分: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);

}

答案 2 :(得分:0)

以下是我用来创建通知的一些代码。它使用v4兼容性库。 如您所知,如果要更改要启动的活动,则必须重新创建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);