-
===关于点击通知打开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个答案 按时间排序 按投票排序
-
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点击通知打开界面的实现涉及到接收广播、解析通知内容、判断条件并启动目标Activity等多个环节,开发者需要充分利用JPush提供的API和自定义机制,结合业务需求进行定制化开发。通过实践和优化,可以...
Android 中点击通知栏的通知启动 Activity 是一个常见的问题,下面将对该问题进行详细的分析和解决。 一、问题描述 在 Android 中,当我们点击通知栏中的消息时,应用程序并没有启动指定的 Activity,而是直接跳...
在这种情况下,如果用户点击通知,系统会尝试重新启动应用,但是应用的全局状态可能并未恢复,因此需要我们手动处理初始化。 解决这个问题的一种方法是使用前台服务。当接收到推送时,启动一个前台服务,这样即使...
当用户点击通知时,我们通常希望他们能够按照特定的路径(如:从新Activity -> 主Activity)回退,而不是直接退出应用。TaskStackBuilder可以帮助我们构建这样的栈结构。 1. **创建TaskStackBuilder** 使用...
在Adapter中定义一个接口,用于在按钮被点击时通知Activity。接口通常包含一个方法,例如`onButtonClick(int position)`,其中`position`参数表示被点击的按钮所在列表项的位置。 3. **在Activity中使用Adapter**...
悬浮Activity通常用于快速启动、通知或者设置等场景。 在Android中实现悬浮Activity,首先需要创建一个新的Activity,并在布局文件中设置其样式为Dialog样式。这可以通过修改`<style>`标签中的`parent`属性为`Theme...
要处理通知的点击事件,通常会创建一个PendingIntent,这个Intent会在用户点击通知时启动。例如,打开一个Activity: ```java Intent intent = new Intent(context, MainActivity.class); PendingIntent ...
当用户点击通知时,Android系统会使用我们之前创建的PendingIntent启动目标Activity。在这个过程中,系统会自动处理Intent,将其传递给Activity,从而实现从通知栏直接跳转到相应的界面。 6. **自定义通知样式和...
// 设置点击通知后执行的Intent ``` 2. 使用Service发布通知: 在Service中,你可以在适当的时间调用`startForeground(int id, Notification notification)`方法启动前台服务并显示通知。这样可以确保Service即使...
这个接口通常包含一个方法,用于通知Activity或Fragment某个视图项已被点击。首先,在Adapter类中定义接口: ```java public interface OnItemClickListener { void onItemClick(int position); } ``` 接下来,将...
这意味着,从这个Activity启动的任何其他Activity都将在这个单独的Task中打开,形成一个新的Activity栈。通常用于需要与系统服务交互或独立于应用其余部分的Activity。 在“activity四大启动方式demo”中,开发者...
此外,Android提供了许多其他方式来处理Activity间的交互,如使用`startActivityForResult()`进行有结果的启动,或者通过`PendingIntent`在服务或通知中启动Activity。在实际开发中,了解和熟练掌握这些方法对于构建...
然而,仅仅依靠系统管理可能不会立即结束所有Activity,特别是在用户通过任务切换器(如最近应用列表)返回到应用时,之前打开的Activity可能会重新显示。 为了实现点击退出按钮完全退出程序,我们可以采用以下方法...
这个URI可以在网页、邮件、短信等各种地方被点击,Android系统会识别并启动我们定义的Activity。 在`MyCustomActivity`中,我们需要处理接收到的Intent。这通常在`onCreate()`或者`onNewIntent()`方法中完成,通过...
当用户点击通知时,通常希望打开特定的Activity或者执行某些操作。在`Android-GTPushDemo`中,这部分处理可能在`ClickEvent`类或`NotificationBuilder`中实现。当用户点击通知,个推SDK会启动指定的Activity,并...
在Activity运行过程中,如果发生其他事件,如收到通知、用户打开新的Activity或系统资源紧张,Activity可能会进入暂停或停止状态。onPause()在Activity失去焦点但仍可见时调用,适合保存临时数据。如果Activity完全...
最后,关于数据传递,如果需要在点击通知时传递额外的信息,可以使用Intent的putExtra()方法将数据附加到Intent中,然后在目标Activity中通过getIntent().getExtras()获取。例如: ```java intent.putExtra("key", ...
`resultPendingIntent`是当用户点击通知时要执行的操作,比如打开应用的主界面。可以这样创建: ```java Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |...
此模式常用于避免重复创建Activity,例如,当用户点击通知栏消息时,可能希望将用户带到已打开的应用而不是创建新的Activity。 为了在代码中设置Activity的启动模式,你需要在AndroidManifest.xml中对应的Activity...
标题"通知栏声音提示显示取消"揭示了这个功能的一个具体实现,即当有新通知时,不仅会在通知栏上显示,还会伴随声音提示,用户可以点击通知进行跳转,同时也能取消这些通知。现在,我们来详细探讨这个功能涉及的技术...