精华内容
下载资源
问答
  • Android 通知栏点击

    千次阅读 2018-08-02 16:30:32
    这里介绍如何点击通知后,跳转到指定activity,包含多个activity。   app结构:有3个activity,执行顺序是a->b->c,a是主界面。 需求:点击通知,直接打开activity c,按返回键打开b。   这里...

    这里介绍如何点击通知后,跳转到指定activity,包含多个activity。

     

    app结构:有3个activity,执行顺序是a->b->c,a是主界面。

    需求:点击通知,直接打开activity c,按返回键打开b。

     

    这里的主activity一定要用FLAG_ACTIVITY_NEW_TASK ,不然会打开多次。当然根据不同的需求,设置不同。其它activity的启动模式选择singleTask,这里我们的c只能出现一个,所以这样设置。

     

            mNotificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
    
            Intent intentMain = new Intent(context, MainActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            Intent intent1 = new Intent(context, BActivity.class);
            Intent intent2 = new Intent(context, CActivity.class);
    
            Intent[] intents = {intentMain, intent1, intent2};
            PendingIntent pendingIntent = PendingIntent.getActivities(context, 0, intents, PendingIntent.FLAG_CANCEL_CURRENT);
    
            mNotificationBuilder = new Notification.Builder(context)
                    .setContentTitle("标题")
                    .setContentText("内容")
                    .setSmallIcon(R.drawable.logo)
                    .setContentIntent(pendingIntent);
    
            //发通知
            mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build());

     

    展开全文
  • Android通知栏点击事件

    万次阅读 2017-07-21 02:24:55
    最近在做一个混合开发项目,给本地通知栏发送消息,并且在点击...获取通知栏点击事件3.通过cordova调用js一、首先是给本地通知栏发送消息,此部分比较简单,直接上代码。public void createNotification(Context ctx,

      最近在做一个混合开发项目,给本地通知栏发送消息,并且在点击通知栏时不去跳转到某一activity界面,而是通过cordova调用js事件。

    大致可将这个问题分成三个部分来解决:

    1.给本地通知栏发送消息
    2.获取通知栏点击事件
    3.通过cordova调用js

    一、首先是给本地通知栏发送消息,此部分比较简单,直接上代码。

    public void createNotification(Context ctx, PendingIntent intent, int id) {
    
        NotificationManager nm =  (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = null;
        //有两种方式来创建notification
        //一
        notification = new Notification(icon, title, id);
        notification.setLatestEventInfo(ctx, title, content,intent);
        //二
        Notification.Builder builder = new Notification.Builder(ctx);
        builder.setContentText("title"); // 下拉通知栏内容
        builder.setContentTitle("content");// 下拉通知栏标题
        builder.setSmallIcon(icon);//通知栏图标
        builder.setAutoCancel(true);
        builder.setContentIntent(intent);
        notification = builder.build();
        nm.notify(id, notification);
    }

    二、获取通知栏的点击事件,这里是本文的重点。

    上面的代码大家应该能注意到,notification创建时需要传入一个PendingIntent类型的参数,这个参数就是用来处理点击通知之后的动作。与一般intent不同,PendingIntent是指在某条件适当的时机执行的动作,而不是立即执行。

    PendingIntent当中有一个方法getBroadcast(),可以向外发出广播,因此我们可以借助该方法,在点击通知栏时发出广播并在onreceiver方法中处理相应逻辑

    class MyReceiver extends BroadcastReceiver{
        public void onReceive(Context context, Intent intent) {
            //处理相应逻辑
        }
    }
    
    public void buildAction(Context ctx,Intent intent) {
    
        int id = (int)System.currentTimeMillis() / 10000;
        //这个getbroadcast方法和创建notifycation时都会用到一个id标示,一般都是统一的,但是我用不同值试过也是可以的
    
        PendingIntent clickIntent = PendingIntent.getBroadcast(ctx, id,intent, PendingIntent.FLAG_UPDATE_CURRENT);
        createNotification(ctx,clickIntent,id);
    
    }

    接下来就是将广播放入PendingIntent当中了,同时还要注册广播,最开始我的写法时参照网上的写法:

    IntentFilter filter = new IntentFilter();
    filter.addAction(MY_ACTION);
    args.getUMActivity().registerReceiver(new MyReceiver(), filter);
    
    Intent intent = new Intent(ctx, MyReceiver.class);
    intent.setAction(MY_ACTION);

    发现这样写无法触发广播,只能静态注册,网上查了半天也没有结果。后来一想既然调用了setAction方法注册了动作,并且有了intentfilter,为什么还要写一个new Intent(ctx,MyReceiver.class);这不是画蛇添足吗,之后改成如下方式:

    public void run() {
        IntentFilter filter = new IntentFilter(MY_ACTION);
    
        args.getUMActivity().registerReceiver(new UMNotificationClickReceiver(), filter);
    
        Intent intent = new Intent(MY_ACTION);
        buildAction(this,intent);
    }

    一运行,哈哈,OK

    第三部分用cordova调用js就不细说了,与本文无关,有兴趣的同学可以去网上学习一下混合开发!

    展开全文
  • Android 通知栏点击取消

    千次阅读 2015-11-12 14:54:46
    看了很多文章写了怎么取消通知栏的,自己试了就是取消不掉。后来尝试之后实现了,代码写错了。 public class LoginSuccess extends Activity { @Override protected void onCreate(Bundle ...

    看了很多文章写了怎么取消通知栏的,自己试了就是取消不掉。后来尝试之后实现了,代码写错了。

    
    public class LoginSuccess  extends Activity  {
    	
    		
    	@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.success_login);
            Toast.makeText(LoginSuccess.this, "登陆成功", 2000).show();
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
            builder.setContentTitle("通知栏标题 ")
            		.setContentText("通知内容")
    //        		.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL))//点击意图
            		.setTicker("通知首次出现在通知栏,带上升动画效果的")
            		.setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间 
            		.setPriority(Notification.PRIORITY_DEFAULT)
            		.setAutoCancel(true)//用户点击就自动消失
            		.setOngoing(true)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
            		.setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合  
            	    //Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission
            		.setSmallIcon(R.drawable.taobao);//设置通知小ICON  
            Notification notification = builder.build();
            notification.flags = Notification.FLAG_AUTO_CANCEL;
            notificationManager.notify(100, notification);
    //        notificationManager.cancel(100);//通知以后自动消失了
           
        }
    	
    }
    

    错误的代码是:其实已经不是一个对象了。


     Notification notification = builder.build();
     notification.flags = Notification.FLAG_AUTO_CANCEL;
     notificationManager.notify(100, builder.build());


    推荐:http://blog.csdn.net/vipzjyno1/article/details/25248021

    展开全文
  • android 通知栏点击事件及8.0适配

    千次阅读 2019-02-02 19:12:27
    设置 通知栏 private void setNotification(String filePath, String recordType) { notificationManager = (NotificationManager) mainActivity.getSystemService(Context.NOTIFICATION_SERVICE); ...

    设置 通知栏

        private void setNotification(String filePath, String recordType) {
            notificationManager = (NotificationManager) mainActivity.getSystemService(Context.NOTIFICATION_SERVICE);
    
            // ========= 重点1 ============
            NotificationChannel notificationChannel= null;
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
                notificationChannel = new NotificationChannel("channel_id","channel_name", NotificationManager.IMPORTANCE_HIGH);
                notificationChannel.setDescription("chanel_description");
                notificationChannel.enableVibration(true);
                notificationChannel.setVibrationPattern(new long[]{100, 200, 200, 200});
                notificationManager.createNotificationChannel(notificationChannel);
            }
    
             builder = new NotificationCompat.Builder(mainActivity, mainActivity.getPackageName());
             remoteViews = new RemoteViews(mainActivity.getPackageName(), R.layout.notification_layout);
             notification = builder
                    .setSmallIcon(R.mipmap.nl_icon)//通知的构建过程基本与默认相同
                    .setWhen(System.currentTimeMillis())
                    .setAutoCancel(false)
                    .setShowWhen(false)
                    .setLocalOnly(true)
                    .setPriority(Notification.PRIORITY_MAX)
                    .setCustomContentView(remoteViews)
                    .setVibrate(new long[]{100, 200, 200, 200})
                    .build();
            notification.flags=Notification.FLAG_ONGOING_EVENT;
            notification.flags |= Notification.FLAG_NO_CLEAR;
    
            Intent intentOne = new Intent(mainActivity, MainActivity.class);
            PendingIntent pendingIntentOne = PendingIntent.getActivity(mainActivity, 0, intentOne, PendingIntent.FLAG_UPDATE_CURRENT);
    
            Intent intent = new Intent("notification_clicked"); // ========= 重点2============
            PendingIntent pendingIntent = PendingIntent.getBroadcast(mainActivity, PENDINGINTENT_REQUEST_CODE, intent,PendingIntent.FLAG_UPDATE_CURRENT);
    
            remoteViews.setTextViewText(R.id.nl_tv_filename,filePath);
            remoteViews.setTextViewText(R.id.nl_tv_type,recordType);
            remoteViews.setOnClickPendingIntent(R.id.nl_rl_parent, pendingIntent);
            
    
            notificationManager.notify(NOTIFICATION_ID, notification);
        }

    注册动态广播

    IntentFilter intent=new IntentFilter("notification_clicked"); // ========= 重点3============
    nlBroadcastReceiver=new NLBroadcastReceiver();
    mainActivity.registerReceiver(nlBroadcastReceiver,intent);

    接收广播

       class NLBroadcastReceiver extends BroadcastReceiver{
    
           @Override
           public void onReceive(Context context, Intent intent) {
               LogTools.i(TAG,"onReceive=intent=action="+intent.getAction());
                if(intent.getAction().equals("notification_clicked")){ // ========= 重点4 ============
             
                }
           }
       }

    取消通知栏

        private void cancelNotification(){
            notificationManager = (NotificationManager) mainActivity.getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.cancel(NOTIFICATION_ID);
        }

    注销广播

     mainActivity.unregisterReceiver(nlBroadcastReceiver );

     

    展开全文
  • Android通知栏点击通知消失

    千次阅读 2015-12-16 16:08:55
    private void showNotification() {  int icon = R.drawable.ic_launcher; //通知图标  CharSequence ... //状态(Status Bar)显示的通知文本提示  long when = System.currentTimeMillis(); //通知产生
  • 最近在使用通知栏通知用户,用户点击通知栏后跳转到相应的界面.但是发现一个问题,在某些机型比如三星note2,OPPO find7上无法启动.但是在其他手机上正常.通知栏的代码如下:public static void ...
  • 上一篇关于android通知栏点击回不到应用程序的问题其实还有个灾难性的bug存在,我们都知道,在android应用里面按下返回键都会退出当前应用程序(一般情况下是执行Myactivity.this.finish();函数)。。。  现在bug...
  • Android通知栏微技巧,8.0系统中通知栏的适配

    万次阅读 多人点赞 2018-04-17 07:39:11
    大家好,今天我们继续来学习Android 8.0系统的适配。...在上一篇文章当中,我们学习了Android 8.0系统应用图标的适配,那么本篇文章,我们自然要将重点放在通知栏上面了,学习一下Android 8.0系统的通知栏适配
  • android常驻通知栏点击事件

    千次阅读 2020-06-29 10:52:48
    * 说明:通知栏点击事件 * 作者:耿保龙 * 添加时间:2020/6/28 17:11 * 修改人:耿保龙 * 修改时间:2020/6/28 17:11 */ private fun getNotificationPendingIntent(context: Context): P.
  • 先说明一下,通知栏这个功能,我一般用的很少,故不是太熟悉,今天有这个需求,前台service常驻,自义定的通知栏点击事件跳转,搞了一两个小时,设置的点击事件一直不起作用。郁闷了半天最后才发现问题。下面代码...
  • Android 点击通知栏 跳转

    千次阅读 2015-11-27 09:24:50
    项目中使用的是google的gcm推播服务,当从服务端发送消息给手机客户端时,通知栏会收到一条信息,如果此时用户停留在软件的界面上,应该是点击通知栏,还是显示在原来的界面上,当用户退出了软件,点击通知栏,...
  • Android 通知栏Notification点击跳转无效

    千次阅读 2017-05-02 10:40:32
    一定要保证notificationManager.notify(0,builder.build()); 这段代码写在setContentIntent()方法之后否者无效. 之前点击无效的代码是这样写的---->错误的方法: ...//点击通知栏跳转到聊天界面 Intent inte
  • Android 通知栏——Notification

    千次阅读 2018-07-04 20:34:43
    在 Android 开发中,通知栏是一个比较常见的功能,我们来看看如何来实现一些简单的通知栏。 实现通知栏主要由两个类:Notification 和 NotificationManager,但是由于 API 版本的不同导致实现方式会有所不同,...
  • android定义通知栏点击事件

    千次阅读 2019-05-08 10:34:23
    传统的PendingIntent只能跳转到一个页面,这样会有一个bug,就是假如你本来在activity1,然后点击通知跳转到activity1,界面会重新加载而且点击返回键会返回上一个没有修改的activity1,假如这个activity已经被修改...
  • 核心思想: 使用BroadCastReceiver 1 新建一个BroadCastReceiver类,并且在清单文件中...! ... android:name=".NotificationClickReceiver"> </receiver> public class NotificationClickReceiver ...
  • Android监听消息通知栏点击事件

    千次阅读 2019-12-02 16:47:54
    Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class NotificationClickReceiver extends BroadcastReceiver { @Override ...
  • android_通知栏demo

    热门讨论 2013-09-02 17:30:00
    android 通知栏 通知 取消 demo,实现通知栏通知消息,并且点击进入应用
  • 1,通知栏应用: Notification,是一种具有全局效果的通知,可以在系统的通知栏中显示。当 APP 向系统发出通知时,它将先以图标的形式显示在通知栏中。用户可以下拉通知栏查看通知的详细信息。通知栏和抽屉式通知栏...
  • 关于通知栏Notification的使用,不多讲,这里说的很清楚...在应用关闭的时候,发送通知到通知栏点击通知栏能正常跳转到我想要的页面,代码如下 Intent msgIntent = new Intent(); msgIntent.addCate...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,638
精华内容 9,855
关键字:

android通知栏点击