精华内容
下载资源
问答
  • 相信很多朋友都跟我一样,在使用安卓时,遇到这样一个十分令人烦躁的问题:通知栏经常会弹出一堆无用的通知。有些自带的APP从来没用过,但各种通知推送从来没断过。而且每次清除后,过不了多长时间通知栏又是一堆·...

    相信很多朋友都跟我一样,在使用安卓时,遇到这样一个十分令人烦躁的问题:通知栏经常会弹出一堆无用的通知。有些自带的APP从来没用过,但各种通知推送从来没断过。而且每次清除后,过不了多长时间通知栏又是一堆······

    28bb437bd0a6f6905797cb3f14d909ed.png

    那么如何让这些烦人的无用通知彻底消失不再弹出呢?今天就来教大家两招,让这些通知都消失不见~

    1、 从层面去除通知

    常用的软件实际上大部分都给我们提供了是否消息推送的选择权。所以我们可以养成这样的习惯:每安装一个通知信息没啥意义的软件,第一件事儿就是进入软件设置把消息通知关掉。

    9da29ae05847549d46e61476067e209b.png

    进入APP设置关闭推送通知

    另外,新手机往往都会预装一些软件。不过好在除了必要的系统软件,现在的手机APP都可以卸载。所以如果有用不到的软件,那么卸载了就好,从根源上解决相关的无用通知推送。如果遇到无法卸载的情况,那么仍然可以进入APP把推送关掉。

    2、 从系统层面屏蔽通知

    除了关闭软件推送,手机系统一般也会有对APP通知提供屏蔽功能。不同的手机操作系统会有不一样的设置方式,但一般大致可以分两种:一是直接从通知上入手;而是从手机设置中入手。

    从通知直接入手设置

    a1420b20170ec4af41350ae454362d03.png

    H2OS 往左滑 长按均可对通知进行设置

    通知栏弹出一条通知,一般可以通过左右滑、点击清除对通知进行去除。当然,去除了以后还会有该软件的其他通知。这时候,我们可以尝试长按通知,或者左右慢滑,一般就会出现该软件通知的屏蔽设置。

    151a0a1edb335a5be6a04b0faaf03aed.png

    从通知栏一键进入通知管理

    我们拿为例,其搭载的H2OS在接受到通知时,就可以通过通知的长按或者左右滑动进行对通知进行屏蔽。值得一提的是,H2OS在通知右下方会提供系统的全局管理入口,极大的简化了多应用通知同时管理的操作。

    从手机设置中入手

    在手机设置中,一般都会有“应用和通知”、“通知管理”、“应用程序”此类的设置分项。我们从这些入口进入设置,即可对通知进行全局的控制。

    d630a81ad8c025a09429d38975c1889c.png

    还是拿 Pro为例,在H2OS的设置中我们可以找到“应用和通知”,进入“查看全部应用”,然后在每个应用的详细页面中,我们就可以对该应用的通知进行设置了。

    虽然不同的手机设置方式不尽相同,但操作大同小异,朋友们按照这些方法即可远离那些烦人的无用通知。怎么样,学到了吗?

    展开全文
  • 现在一般应用都需要集成推送功能,给用户推送一些相关的消息,这就需要应用取得应用通知栏权限,但是目前国内大部分厂商默认都是不开启通知栏权限的,所以在需要的时候,就要先检测是否开启通知栏权限,如果未开启,...

    前言

    现在一般应用都需要集成推送功能,给用户推送一些相关的消息,这就需要应用取得应用通知栏权限,但是目前国内大部分厂商默认都是不开启通知栏权限的,所以在需要的时候,就要先检测是否开启通知栏权限,如果未开启,则要引导用户去设置中打开通知栏权限。

    获取是否开启通知栏权限

    不多比比,直接上代码:

    public class NotificationUtil {
        private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";
        private static final String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
        
        //调用该方法获取是否开启通知栏权限
        public static boolean isNotifyEnabled(Context context) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                return isEnableV26(context);
            } else {
                return isEnabledV19(context);
            }
        }
    
        /**
         * 8.0以下判断
         *
         * @param context api19  4.4及以上判断
         * @return
         */
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        private static boolean isEnabledV19(Context context) {
    
            AppOpsManager mAppOps =
                    (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
    
            ApplicationInfo appInfo = context.getApplicationInfo();
            String pkg = context.getApplicationContext().getPackageName();
            int uid = appInfo.uid;
            Class appOpsClass = null;
    
            try {
                appOpsClass = Class.forName(AppOpsManager.class.getName());
    
                Method checkOpNoThrowMethod =
                        appOpsClass.getMethod(CHECK_OP_NO_THROW,
                                Integer.TYPE, Integer.TYPE, String.class);
    
                Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
                int value = (Integer) opPostNotificationValue.get(Integer.class);
    
                return ((Integer) checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg) ==
                        AppOpsManager.MODE_ALLOWED);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return false;
        }
    
    
        /**
         * 8.0及以上通知权限判断
         *
         * @param context
         * @return
         */
        private static boolean isEnableV26(Context context) {
            ApplicationInfo appInfo = context.getApplicationInfo();
            String pkg = context.getApplicationContext().getPackageName();
            int uid = appInfo.uid;
            try {
                NotificationManager notificationManager = (NotificationManager)
                        context.getSystemService(Context.NOTIFICATION_SERVICE);
                Method sServiceField = notificationManager.getClass().getDeclaredMethod("getService");
                sServiceField.setAccessible(true);
                Object sService = sServiceField.invoke(notificationManager);
    
                Method method = sService.getClass().getDeclaredMethod("areNotificationsEnabledForPackage"
                        , String.class, Integer.TYPE);
                method.setAccessible(true);
                return (boolean) method.invoke(sService, pkg, uid);
            } catch (Exception e) {
                return true;
            }
        }
    }
    

    那么4.4以下的版本能否通过反射获取?答案是否定的!
    我在stackoverflow上找到一个回答:
    Android 4.1: How to check notifications are disabled for the application?

    回答中说,在12年的IO大会上有人问了,项目负责人说不能

    还有一点就是,回答在16年被编辑,v4包中加入的

    NotificationManagerCompat.from(this).areNotificationsEnabled();
    

    可以判断是否开启通知栏权限。

    亲测,使用support v4:28.0.0使用此api可以全版本判断获取是否开启通知栏权限!

    跳转通知设置页面

    		Intent localIntent = new Intent();
            //直接跳转到应用通知设置的代码:
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//8.0及以上
                localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                localIntent.setData(Uri.fromParts("package", getPackageName(), null));
            } else if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0以上到8.0以下
                localIntent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
                localIntent.putExtra("app_package", getPackageName());
                localIntent.putExtra("app_uid", getApplicationInfo().uid);
            } else if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {//4.4
                localIntent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                localIntent.addCategory(Intent.CATEGORY_DEFAULT);
                localIntent.setData(Uri.parse("package:" + getPackageName()));
            } else {
                //4.4以下没有从app跳转到应用通知设置页面的Action,可考虑跳转到应用详情页面,
                localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                if (Build.VERSION.SDK_INT >= 9) {
                    localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                    localIntent.setData(Uri.fromParts("package", getPackageName(), null));
                } else if (Build.VERSION.SDK_INT <= 8) {
                    localIntent.setAction(Intent.ACTION_VIEW);
                    localIntent.setClassName("com.android.settings", "com.android.setting.InstalledAppDetails");
                    localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
                }
            }
            startActivity(localIntent);
    

    好了,完结!

    参考文章:
    https://www.jianshu.com/p/2d0a9d5559fc
    https://www.jianshu.com/p/757476ca3d67

    展开全文
  • 下拉通知栏除了可以帮助Android用户来...对于使用频率偏高的应用,除了将程序图标放置在首屏、侧边栏等地方,现在又多了一个同样简单的方法,通过Bar Launcher把常用的APP放在下拉通知栏中,当你无论是在任何程序...

    下拉通知栏除了可以帮助Android用户来快速查看信息和进行各种的便捷开关操作外,通过一些第三方程序还可以让它拥有更多的实用功能,例如今天为大家推荐的这款《Bar Launcher》就可以为下拉通知栏加入快速启动APP的功能。

    对于使用频率偏高的应用,除了将程序图标放置在首屏、侧边栏等地方,现在又多了一个同样简单的方法,通过Bar Launcher把常用的APP放在下拉通知栏中,当你无论是在任何程序或操作下,都可以通过下拉通知栏来打开你常用的APP,非常方便。

    一起看一下使用方法。如下图,打开软件后点击右上角的“+”添加应用,添加后点击右上角的软件logo来完成设定。当你想移除已添加的应用也非常简单,只需要向左/右滑动删除。添加完成后打开你的下拉通知栏,是不是已经看见添加的应用在里面了呢。软件更可以对图标在通知栏中的位置进行更改,通过设定优先级让它在上中下任何位置都是可以的。

    b15fe7aa6d9c2ed86518d0d51c957214.gif

    (通过“+”添加应用程序)

    d380d3127724bb03602256080453d122.gif

    (左/右滑动来移除应用)

    44785636802a71798fc8900aa00d319d.gif

    (已添加的APP出现在下拉通知栏中)

    6377859572d23406a64a1307b2466ce8.gif

    (点击菜单键呼出设置→Priority中设定位置)

    软件对于APP的添加数量上并不是无限的。在手机上只允许添加7款应用,而在7寸平板上支持9个,10寸平板则支持最多11个。

    展开全文
  • 活动应用程序,然后滑动它关闭,所以如果我这样关闭它我想要我的应用程序的通知消失如果在按住主屏幕时(当您在设备的主屏幕中时)通过"活动应用程序列表"中的滑动操作关闭,我如何删除与应用程序相关的通知栏?...

    当我打开应用程序时,我按下主页按钮它仍然在后台播放(它显示一个播放和停止的通知栏),一段时间后我想要它关闭它所以我按下主页按钮,直到它显示我 活动应用程序,然后滑动它关闭,所以如果我这样关闭它我想要我的应用程序的通知消失

    如果在按住主屏幕时(当您在设备的主屏幕中时)通过"活动应用程序列表"中的滑动操作关闭,我如何删除与应用程序相关的通知栏?

    **当我滑动以关闭应用程序时,未实现我的类中的onDestroy()方法

    **第二次意识到我必须调用服务才能到达onTaskRemoved(),在这个方法中我可以实现notificationManager关闭

    好的,所以我已经弄清楚了。

    首先,我将制作一个服务类

    public class MyService extends Service {

    @Override

    public void onCreate()

    {

    super.onCreate();

    }

    @Override

    public IBinder onBind(Intent intent) {

    // TODO Auto-generated method stub

    return null;

    }

    }

    现在我要在onPause()中启动服务

    startService(new Intent(this, MyService.class));

    然后是onDestroy()方法(在Service的帮助下调用)

    @Override

    protected void onDestroy()

    {

    super.onDestroy();

    String ns = Context.NOTIFICATION_SERVICE;

    NotificationManager nMgr = (NotificationManager) this.getSystemService(ns);

    nMgr.cancel(1);

    }

    并且不要忘记添加Manifest

    android:stopWithTask="false"   >

    展开全文
  • 简单的通知栏监控应用,可以在txt中显示获得的通知栏消息
  • Android通知栏微技巧,8.0系统中通知栏的适配

    万次阅读 多人点赞 2018-04-17 07:39:11
    大家好,今天我们继续来学习Android 8.0系统的适配。...在上一篇文章当中,我们学习了Android 8.0系统应用图标的适配,那么本篇文章,我们自然要将重点放在通知栏上面了,学习一下Android 8.0系统的通知栏适配
  • 继续note: 所谓通知栏,就是下面这个
  • 其实这个功能主要是方便用户更快查询新的App,以及捷触达“应用更新”列表、MIUI系统App的垃圾清理,当然,您觉得开起来通知栏快捷入口后,通知栏意义不大或者界面不清爽,点击右上角的小叉叉,关闭也是可以的。...
  • 0. 消息通知栏-禁止应用的消息通知 1. 底层源码 frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java package com.android.server.notification; /** {@hide} *...
  • app常驻通知栏通知栏

    热门讨论 2013-03-16 11:29:10
    android环境下,进入APP,通知栏挂起一条通知,不可被自动清除,且在软件运行过程中,可以直接通过点击通知栏进入APP堆栈内最后一个activity。在软件退出时,通知栏自动关闭
  • android应用获取通知栏权限

    万次阅读 2016-10-27 13:27:12
    android应用获取手机是否有通知栏的权限:package com.jibo.health.views;import android.app.AppOpsManager; import android.content.Context; import android.content.pm.ApplicationInfo;import java.lang....
  • 相信很多朋友都跟我一样,在使用安卓手机时,遇到这样一个十分令人烦躁的问题:通知栏经常会弹出一堆无用的通知。有些自带的APP从来没用过,但各种通知推送从来没断过。而且每次清除后,过不了多长时间通知栏又是一...
  • Android RemoteView的应用通知栏

    千次阅读 2017-04-10 15:37:03
    这一次我们通过使用RemoteView来制作一个通知栏 这个通知栏由一个ImageView和TextView和Button构成,点击Button会跳转到TwoActivity,点击到其他位置会跳转到MainActivity。 1. 先创建一个Notification ...
  • 在代码中如何知道应用是否开启了显示通知这一权限,项目想在推送消息通知设置中通知用户系统是否开启了此权限。
  • 原标题:华为通知栏怎么设置?三招帮你禁止华为通知栏消息不管是华为、小米还是苹果三星等智能手机,都会有同一个困扰:每天都会接收到不少的推送栏消息,除了系统通知之外,还有各种各样的第三方应用推送消息,十分...
  • android 应用通知栏

    2013-08-26 08:37:35
    点击常驻通知栏图标时,是重新启动了应用,我想实现的是如果应用已经启动则返回已经启动的应用,否则新启动该应用。  可是这个要怎么实现呢,应该是要设置一下Intent,上网查了一下,果然是Intent要进行一些设置...
  • Android应用消息通知栏的实现

    千次阅读 2017-03-14 19:55:01
    该程序主要实现了应用推送通知,将信息显示到通知栏。并实现了通知的几种方式。例如手机震动提醒、LED灯闪烁提醒以及通知的重要的程度等。 public class MainActivity extends AppCompatActivity implements View....
  • 应用主题色扩展到通知栏和不包括通知栏的代码设置 对比图:如图中画圈圈的部分对比 定义一个应用中所有窗口Activity的基类BaseActivity,在其中onCreate方法中运行以下的方法 代码如下: // TODO:适配4.4 ...
  • 既然是动态隐藏显示某些应用通知,因此需要另一提供数据的一方,因为是为了满足另一个应用的关于操作的隐藏与显示需求,因此是“它”来给我提供隐藏应用的的数据,这样就相当于两个应用去完成这个功能,即进程间的...
  • 相信很多朋友都跟我一样,在使用安卓手机时,遇到这样一个十分令人烦躁的问题:通知栏经常会弹出一堆无用的通知。有些自带的APP从来没用过,但各种通知推送从来没断过。而且每次清除后,过不了多长时间通知栏又是一...
  • 通知栏的简单应用

    2015-04-10 09:47:00
    当收到通知的时候 ,震动 ,led 闪关灯 每隔一秒亮一次
  • Android 应用获取通知栏权限

    千次阅读 2017-11-24 13:19:55
    * 获取通知栏权限是否开启 */ public class NotificationsUtils { private static final String CHECK_OP_NO_THROW = "checkOpNoThrow" ; private static final String OP_POST_...
  • Android消息通知栏应用

    千次阅读 2013-10-21 11:11:03
    对应Android消息通知栏应用的这样的效果是很常见的,它使用了Android4大组件中的broadcast receiver这个组件,这里我使用的方法是新建的一个类继承与BroadcastReceiver 要实现这种效果我总结了这几个步骤: 1、创建...
  • iOS APNS 极光推送 点击通知栏跳转应用相应页面
  • Android应用源码之实现Notification的通知栏常驻.zip
  • 通知栏样式: endingIntent pendingIntent2 = PendingIntent.getActivity(appContext, 0, new Intent(appContext, MainActivity.class), 0); // 通过Notification
  • Android高级应用源码-实现Notification的通知栏常驻.zip
  • Android 判断应用程序获取通知栏权限是否开启,以及如何跳转到应用程序设置界面, 起先我是想通过app手动检测权限是否开启,进行动态设置及:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,693
精华内容 38,277
关键字:

怎样关闭应用通知栏