0 0

===关于点击通知打开activity======30

问题是这样的:


我写了一个service  ,service产生了通知,在状态栏中显示。 我期望点击通知图标后,打开我所期望的activity.

但是现在,  每次点击通知图标  打开的都是MainActivity  (就是启动服务的那个主Activity),
除非我把MainActivity退出,  才会打开我期望的activity


请哪位帮忙,谢谢!!


显示通知的代码如下:


public void showNotification(String message) {

Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

NotificationInfo n = this.parser.parseNotificationInfo(message);
Bundle bundle = new Bundle();
bundle.putString("UNREAD_MESSAGE", "UNREAD_MESSAGE");
intent.putExtras(bundle);

intent.setClass(this, n.getNotifyActivityClass());
intent.putExtra(PushConsts.PARAM_FROM_SERVICE, true);

Notification notification = new Notification(n.getIcon(), message,
System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
intent, 0);

notification.setLatestEventInfo(this, n.getTitle(), n.getContent(),
contentIntent);
mNM.notify(n.getId(), notification);

}
2014年9月14日 21:59

1个答案 按时间排序 按投票排序

0 0

public static void sendNotify(Context context,Class<? extends BaseActivity> target){
		NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);   
		Notification n = new Notification(R.drawable.noti_title_icon, "收到新通知", System.currentTimeMillis());  
		n.flags = Notification.FLAG_AUTO_CANCEL;     
		n.defaults = Notification.DEFAULT_ALL;
		
		Intent i = new Intent(context,target);
		i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
		PendingIntent pi = PendingIntent.getActivity(context, 0, i,
				PendingIntent.FLAG_UPDATE_CURRENT);
		n.setLatestEventInfo(context, "收到新通知,请点击查看","",pi);
		nm.notify(R.string.app_name, n);
	}

首先贴上我的源码,这个可以满足楼主的需求。
其中关键点在于PendingIntent 的使用。
用PendingIntent将指明了目标Activity的Intent包装一次。

2014年9月22日 15:07

相关推荐

    JPush点击通知打开界面

    综上所述,JPush点击通知打开界面的实现涉及到接收广播、解析通知内容、判断条件并启动目标Activity等多个环节,开发者需要充分利用JPush提供的API和自定义机制,结合业务需求进行定制化开发。通过实践和优化,可以...

    关于Android中点击通知栏的通知启动Activity问题解决

    Android 中点击通知栏的通知启动 Activity 是一个常见的问题,下面将对该问题进行详细的分析和解决。 一、问题描述 在 Android 中,当我们点击通知栏中的消息时,应用程序并没有启动指定的 Activity,而是直接跳...

    Android推送遇到的问题--app关闭后,点击通知后点击通知后app未初始化的问题

    在这种情况下,如果用户点击通知,系统会尝试重新启动应用,但是应用的全局状态可能并未恢复,因此需要我们手动处理初始化。 解决这个问题的一种方法是使用前台服务。当接收到推送时,启动一个前台服务,这样即使...

    Android 一次启动多个Activity (TaskStackBuilder)

    当用户点击通知时,我们通常希望他们能够按照特定的路径(如:从新Activity -&gt; 主Activity)回退,而不是直接退出应用。TaskStackBuilder可以帮助我们构建这样的栈结构。 1. **创建TaskStackBuilder** 使用...

    在Activity中响应ListView内部按钮的点击事件

    在Adapter中定义一个接口,用于在按钮被点击时通知Activity。接口通常包含一个方法,例如`onButtonClick(int position)`,其中`position`参数表示被点击的按钮所在列表项的位置。 3. **在Activity中使用Adapter**...

    Android 悬浮Activity ( Dialog风格)

    悬浮Activity通常用于快速启动、通知或者设置等场景。 在Android中实现悬浮Activity,首先需要创建一个新的Activity,并在布局文件中设置其样式为Dialog样式。这可以通过修改`&lt;style&gt;`标签中的`parent`属性为`Theme...

    Android 通知(notification)简单实用Demo,包含点击功能

    要处理通知的点击事件,通常会创建一个PendingIntent,这个Intent会在用户点击通知时启动。例如,打开一个Activity: ```java Intent intent = new Intent(context, MainActivity.class); PendingIntent ...

    android 通知栏跳转

    当用户点击通知时,Android系统会使用我们之前创建的PendingIntent启动目标Activity。在这个过程中,系统会自动处理Intent,将其传递给Activity,从而实现从通知栏直接跳转到相应的界面。 6. **自定义通知样式和...

    Service实现通知,判断通知栏是否已打开

    // 设置点击通知后执行的Intent ``` 2. 使用Service发布通知: 在Service中,你可以在适当的时间调用`startForeground(int id, Notification notification)`方法启动前台服务并显示通知。这样可以确保Service即使...

    android自定义接口,然后在activity中实现点击监听,调用getView解决滑动错位的问题

    这个接口通常包含一个方法,用于通知Activity或Fragment某个视图项已被点击。首先,在Adapter类中定义接口: ```java public interface OnItemClickListener { void onItemClick(int position); } ``` 接下来,将...

    activity四大启动方式demo

    这意味着,从这个Activity启动的任何其他Activity都将在这个单独的Task中打开,形成一个新的Activity栈。通常用于需要与系统服务交互或独立于应用其余部分的Activity。 在“activity四大启动方式demo”中,开发者...

    android两个activity的例子

    此外,Android提供了许多其他方式来处理Activity间的交互,如使用`startActivityForResult()`进行有结果的启动,或者通过`PendingIntent`在服务或通知中启动Activity。在实际开发中,了解和熟练掌握这些方法对于构建...

    Android 完全退出程序,关闭所有Activity

    然而,仅仅依靠系统管理可能不会立即结束所有Activity,特别是在用户通过任务切换器(如最近应用列表)返回到应用时,之前打开的Activity可能会重新显示。 为了实现点击退出按钮完全退出程序,我们可以采用以下方法...

    android:scheme 通过uri跳转到APP应用指定Activity

    这个URI可以在网页、邮件、短信等各种地方被点击,Android系统会识别并启动我们定义的Activity。 在`MyCustomActivity`中,我们需要处理接收到的Intent。这通常在`onCreate()`或者`onNewIntent()`方法中完成,通过...

    Android-GTPushDemo个推推送的demo以及点击通知后的处理

    当用户点击通知时,通常希望打开特定的Activity或者执行某些操作。在`Android-GTPushDemo`中,这部分处理可能在`ClickEvent`类或`NotificationBuilder`中实现。当用户点击通知,个推SDK会启动指定的Activity,并...

    Android应用程序四大组件之Activity入门(Demo)

    在Activity运行过程中,如果发生其他事件,如收到通知、用户打开新的Activity或系统资源紧张,Activity可能会进入暂停或停止状态。onPause()在Activity失去焦点但仍可见时调用,适合保存临时数据。如果Activity完全...

    自定义通知声音

    最后,关于数据传递,如果需要在点击通知时传递额外的信息,可以使用Intent的putExtra()方法将数据附加到Intent中,然后在目标Activity中通过getIntent().getExtras()获取。例如: ```java intent.putExtra("key", ...

    android_通知栏demo

    `resultPendingIntent`是当用户点击通知时要执行的操作,比如打开应用的主界面。可以这样创建: ```java Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |...

    Activity启动模式

    此模式常用于避免重复创建Activity,例如,当用户点击通知栏消息时,可能希望将用户带到已打开的应用而不是创建新的Activity。 为了在代码中设置Activity的启动模式,你需要在AndroidManifest.xml中对应的Activity...

    通知栏声音提示显示取消

    标题"通知栏声音提示显示取消"揭示了这个功能的一个具体实现,即当有新通知时,不仅会在通知栏上显示,还会伴随声音提示,用户可以点击通知进行跳转,同时也能取消这些通知。现在,我们来详细探讨这个功能涉及的技术...

Global site tag (gtag.js) - Google Analytics