我正在实现一个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);
}
请建议我如何在意图中传递不同的活动。
答案 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);