精华内容
下载资源
问答
  • 原标题:华为通知栏怎么设置?三招帮你禁止华为通知栏消息不管是华为、小米还是苹果三星等智能手机,都会有同一个困扰:每天都会接收到不少的推送栏消息,除了系统通知之外,还有各种各样的第三方应用推送消息,十分...

    原标题:华为通知栏怎么设置?三招帮你禁止华为通知栏消息

    不管是华为、小米还是苹果三星等智能手机,都会有同一个困扰:每天都会接收到不少的推送栏消息,除了系统通知之外,还有各种各样的第三方应用推送消息,十分烦人。面对这样的提示,大部分的人都会选择一个个删除通知。但是实际上,在华为上我们有更简单的方法来清除通知,下面小编就跟大家简单说说。

    4c9bd4571138785f32de7e53a208e11d.png

    一、指纹识别秒关通知

    如果你的手机是支持“指纹识别”功能的话,那么你就可以通过指纹识别来快速清理通知栏消息。

    进入:设置 - 指纹 - 将“显示通知面板”打开。这样你要清理通知栏消息的时候,可以将手指放在指纹键里然后进行“下滑”操作,即可打开通知栏。当通知栏成功下拉后,双击“指纹键”就可以将消息一键清理掉了。

    94d3e73b658c64edd2a608be24da19a4.png

    二、长按取消“显示通知”

    如果某个应用总是频繁地出现,推送一些消息的话,你可以通过单独设置来禁止对应的APP提示。

    长按推送消息的APP,单击进入应用消息之后将“显示通知”关闭即可。

    464787e320836d7475bbbd736c73b04d.png

    1dac44509bceb1d2f8489dadf7c37eb5.png

    三、禁止通知

    如果你想要禁止所有的APP推送通知,只允许部分重要应用发送推送消息的话,可以通过以下方法来禁止所有通知。

    进入:设置 - 通知管理 - 进入对应的APP,选择禁止通知即可。

    以上就是华为如何禁止通知的简单方法,你都get到了吗?返回搜狐,查看更多

    责任编辑:

    展开全文
  • 想想还是自己维护了Toast的队列,那么首先要判断用户是否关闭了消息通知权限,如果没有关闭我还是想用系统提供的队列,网上了很多没有发现可用代码,只能自己看源码了。 ...

    最近在做项目时,遇到一个问题,有部手机就是Toast弹不出来。仔细想想可能权限的问题。后面网上搜索给出如下答案: 跟踪Toast的源代码,

    make方法省略,做了一些初始化的工作,

    show方法

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    public void show(){

    if (mNextView == null) {

    throw new RuntimeException("setView must have been called");

    }

    INotificationManager service = getService();

    String pkg = mContext.getPackageName();

    TN tn = mTN;

    tn.mNextView = mNextView;

    try {

    service.enqueueToast(pkg, tn, mDuration);

    } catch (RemoteException e) {

    // Empty

    }

    }

    static private INotificationManager getService(){

    if (sService != null) {

    return sService;

    }

    sService = INotificationManager.Stub.asInterface(ServiceManager.getService("notification"));

    return sService;

    }

    熟悉binder通讯的同学应该都知道,其实调用了NotificationManagerService.service.enqueueToast方法进入toast队列,进行相应的逻辑处理后回调给Toast中的TN,TN其实就是一个aidl的stub实现,相当于Client端,用来接收Service端发来的消息。看下TN中的show方法

    1

    2

    3

    4

    5

    6

    7

    8

    9

    public void handleShow(){

    ...

    mWM = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);

    mWM.removeView(mView);

    mWM.addView(mView, mParams);

    trySendAccessibilityEvent();

    ...

    }

    }

    通过WinwodManager添加一个view显示提示消息。

    总结来说就是toast的显示过程通过IPC通讯由NotificationManagerService维护一个toast队列,然后通知给Toast中的客户端TN调用WindowManager添加view。

    那么,如果关闭通知栏消息权限,会影响NotificationManagerService队列的逻辑处理过程,导致不能通知TN显示出视图。

    通过上面的分析,我们可以绕过NotificationManagerService,我们自己维护一个toast队列,处理相关的逻辑,进行显示,定时取消。关键代码

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    private static void activeQueue(){

    BooheeToast toast = mQueue.peek();

    if (toast == null) {

    mAtomicInteger.decrementAndGet();

    } else {

    mHanlder.post(toast.mShow);

    mHanlder.postDelayed(toast.mHide, toast.mDuration);

    mHanlder.postDelayed(mActivite, toast.mDuration);

    }

    }

    mQueue维护了Toast的队列,队列采用FIFO调度,每次调用show()方法触发activeQueue()方法,从队列中取出toast进行显示,然后定时取消。 我本想用SnackBar来替代,可SnackBar有下面几个问题要注意:

    1. make()方法的第一个参数的view,不能是有一个ScrollView.

    因为SnackBar的实现逻辑是往这个View去addView.而ScrollView我们知道,是只能有一个Child的.否则会Exception.

    2. 如果大家在想把Toast替换成SnackBar.需要注意的是,Toast和SnackBar的区别是,前者是悬浮在所有布局之上的包括键盘,而SnackBar是在View上直接addView的.

    所以SnackBar.show()的时候,要注意先把Keyboard.hide()了.不然,键盘就会遮住SnackBar.

    想想还是自己维护了Toast的队列,那么首先要判断用户是否关闭了消息通知权限,如果没有关闭我还是想用系统提供的队列,网上了很多没有发现可用代码,只能自己看源码了。

    com.android.server.notification.NotificationManagerService

    0818b9ca8b590ca3270a3433284dd417.png

    private boolean 0818b9ca8b590ca3270a3433284dd417.pngnoteNotificationOp(String pkg, int uid) {

    Slog.v("notifications are disabled by AppOps for " + pkg);

    0818b9ca8b590ca3270a3433284dd417.png

    return

    false;

    0818b9ca8b590ca3270a3433284dd417.png}

    0818b9ca8b590ca3270a3433284dd417.png

    return

    true;

    } 看到这基本上知道 通过

    noteOpNoThrow(AppOpsManager.uid, pkg) != AppOpsManager.AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);mAppOps.noteOpNoThrow()

    AppOpsManager.OP_POST_NOTIFICATION ??? is hide,不可用。这咱办。只能反射,来调用了。

    private static finalString CHECK_OP_NO_THROW= "checkOpNoThrow";private static finalString OP_POST_NOTIFICATION= "OP_POST_NOTIFICATION";

    public static booleanisNotificationEnabled(Context context){

    AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);ApplicationInfo appInfo = context.getApplicationInfo();String pkg = context.getApplicationContext().getPackageName();intuid = appInfo.uid;Class appOpsClass = null;/* Context.APP_OPS_MANAGER */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);intvalue = (int)opPostNotificationValue.get(Integer.class);return((int)checkOpNoThrowMethod.invoke(mAppOps,value,uid,pkg) == AppOpsManager.MODE_ALLOWED);} catch(Exception e) {

    e.printStackTrace();}

    return true;}

    听说到了android24 可以 UseNotificationManagerCompat.areNotificationsEnabled()来判断了。

    github 下载。

    展开全文
  • 华为手机关闭情景智能教程华为手机有个情景智能,记录你的信息然后辅助你做一些事情,但是有时候就是觉得不太习惯,那么怎么来关闭它呢,首先打开手机,来到手机桌面,找到设置菜单,直接点击进入设置现在来到设置...

    华为手机关闭情景智能教程

    华为手机有个情景智能,记录你的信息然后辅助你做一些事情,但是有时候就是觉得不太习惯,那么怎么来关闭它呢,首先打开手机,来到手机桌面,找到设置菜单,直接点击进入设置

    54bf2ceadbe2d56738cc2d612d6a0363.png

    现在来到设置菜单,可以看到目前没有看到“通知和状态栏”选项,往下滑动屏幕,找到这个选项

    828416e9cb68b10d76825bfba176dc9b.png

    现在可以看到有个“通知和状态栏”选项,直接点击进入该选项,进行下面的设置

    6754069cc16557d1dac2857be4b5e65f.png

    在“通知和状态栏”有个通知管理,直接单击进入“通知管理”

    7ea31f3558b935cf12be5bda45a97e3a.png

    现在来到了通知中心,这个里面的软件也比较多,所以找的时候细心点,找到“情景智能”选项

    5704f9dfc6925f1d1001e7907a1db699.png

    由于里面是按字母排序的,所以找的时候要注意方法,现在已经找到,单击“情景智能”

    e8897c3059e6e4b09776186d9ad7c6a4.png

    现在情景智能所有的选项都是打开的,所以要想关闭它的话,就直接把这些选项都关闭就可以了

    2b60197a10e704f5505423fa307b4c83.png

    一一的关闭这些选项

    34d94ab99329fd4c70d518eb7dbdfe27.png

    现在所有的选项都已经关闭,所以也就关闭了情景智能,退出设置菜单,查看设置是否成功

    af6a46bd2e548e7e4c5ce071c4fb1f19.png

    相关阅读:

    以上就是本篇文章的全部内容了,希望对各位有所帮助。如果大家还有其他方面的问题,可以留言交流,请持续关注脚本之家!

    展开全文
  • Toast使用了INotificationManager类,和通知栏有关,如果关闭通知权限,则Toast不能弹出,如三星、华为等手机在关闭通知栏的情况下就不能使用吐司了。当然国内厂商很多,总会有厂商来自己处理这个东西,比如小米,...

    Toast使用了INotificationManager类,和通知栏有关,如果关闭了通知权限,则Toast不能弹出,如三星、华为等手机在关闭通知栏的情况下就不能使用吐司了。当然国内厂商很多,总会有厂商来自己处理这个东西,比如小米,小米在关闭通知的情况下还可以弹出吐司。

    不能强迫用户打开通知,一些很重要的情况下必须要告知用户一些信息,如付款失败、订单创建失败,这种时候我们就让机把吐司吐出来。实现原理就是冒充系统消息,使用系统吐司。

    实现思路是APP调用NotificationManager弹出吐司,就需要给Manager传一个包名,manager获取到该APP包名后先判断该APP是否有通知权限,如果没有则终止,不弹出吐司,有则弹出。我们想在APP没有通知权限下也能弹出吐司就要给manager传“android”,这是使用系统Toast意思,毕竟系统的不会被禁。

    1.首先判断当前通知权限是否可用

    private static boolean isNotificationEnabled(Context context) {

    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);

    boolean areNotificationsEnabled = notificationManagerCompat.areNotificationsEnabled();

    return areNotificationsEnabled;

    }

    2.如果当前通知权限没被禁,那就直接show就行,如果被禁就使用系统吐司

    private static void showSystemToast(Toast toast) {

    try {

    Method getServiceMethod = Toast.class.getDeclaredMethod("getService");

    getServiceMethod.setAccessible(true);

    //hook INotificationManager

    if (iNotificationManagerObj ==null) {

    iNotificationManagerObj = getServiceMethod.invoke(null);

    Class iNotificationManagerCls = Class.forName("android.app.INotificationManager");

    Object iNotificationManagerProxy = Proxy.newProxyInstance(toast.getClass().getClassLoader(), new Class[]{iNotificationManagerCls}, new InvocationHandler() {

    @Override

    public Objectinvoke(Object proxy, Method method, Object[] args)throws Throwable {

    //强制使用系统Toast

    if ("enqueueToast".equals(method.getName())

    ||"enqueueToastEx".equals(method.getName())//华为p20 pro上为enqueueToastEx

    ||"enqueueToastLog".equals(method.getName())) {//三星s10 enqueueToastLog

    args[0] ="android";

    }

    return method.invoke(iNotificationManagerObj, args);

    }

    });

    Field sServiceFiled = Toast.class.getDeclaredField("sService");

    sServiceFiled.setAccessible(true);

    sServiceFiled.set(null, iNotificationManagerProxy);

    }

    toast.show();

    }catch (Exception e) {

    e.printStackTrace();

    }

    }

    method.getName() 的判断需要注意,这里是根据手机来区分的,如果使用的手机获取到的方法名不在这里面就需要自己添加(测试比较麻烦,需要对单独手机进行测试,比如我用的是三星s10,s9可能就不是这个值就需要新增)

    展开全文
  • Android在8.0中针对通知一块在功能上做了较大的改动。 Toast被纳入到了通知管理,其实这在Android 4.4(API 19)以上就已经有特别的处理了。只是一般用户不会怎么注意,开发人员也不会很在意APP的通知开关,因为...
  • 今天我们说说通知栏的声音无法关闭的问题。 因为很多应用更新用的是notification创建一个前台通知,放在通知栏中给用户展示下载进度和提示内容,那么由于Android O引进了一个新的概念,那就是NotificationChannel,...
  • 屏蔽系统通知,Toast无法显示的解决方案 v2.0.0
  • App集成了极光推送,为了保证推送到达率同时使用了小米,华为推送。 需求就是点击收到的推送消息,启动对应的界面。emmmm… 思路 一般来说的处理思路就是: 应用正在运行。处理推送点击事件,直接根据消息内容跳转...
  • 实现常驻通知栏时遇到的问题:无论如何就是不显示通知,查看日志发现貌似报错了:2020-06-28 14:11:34.923 6387-6387/xxx E/CrashReport: android.app.RemoteServiceException: Bad notification posted from ...
  • 1 通知栏“Couldn’t expand RemoteViews”异常解析1.1 源码分析,跨进程传递UI,升级后id变动,版本升级的时候crashApp向系统发起通知栏请求时,向系统传递了一个RemoteViews对象,里面包括了包名,布局id,图片...
  • importandroidx.appcompat.app.AppCompatActivity;importandroidx.core.app.NotificationCompat;importandroid.app.Notification;importandroid.app.NotificationChannel;importandroid.app.NotificationManager;...
  • 比如OPPO手机将通知和状态栏集中在一项设置之内(图1),而华为/荣耀手机则将通知单独作为一项设置,并提供了桌面图标角标提醒和批量管理等实用功能(图2)。下面,我们先以荣耀手机为例,简单看—下通知管理的思路。...
  • android-19Justin Duino 贾斯汀·杜伊诺(Justin Duino) In conjunction with Apple, Google has released an Exposure Notification API that health officials can use (with your voluntary permission) for COVID...
  • 今天我们说说通知栏的声音无法关闭的问题。 因为很多应用更新用的是notification创建一个前台通知,放在通知栏中给用户展示下载进度和提示内容,那么由于Android O引进了一个新的概念,那就是NotificationChannel,...
  • 我试图用NotificationCompat推送通知:NotificationCompat.Builder b = new NotificationCompat.Builder(this);b.setAutoCancel(true).setDefaults(NotificationCompat.DEFAULT_ALL).setWhen(System....
  • android实现常驻通知

    千次阅读 2020-06-28 14:43:47
    2020-06-28 14:11:34.923 6387-6387/jinbin.weather E/CrashReport: android.app.RemoteServiceException: Bad notification posted from package jinbin.weather: Couldn't inflate contentViewsandroid.view....
  • 比如OPPO手机将通知和状态栏集中在一项设置之内(图1),而华为/荣耀手机则将通知单独作为一项设置,并提供了桌面图标角标提醒和批量管理等实用功能(图2)。下面,我们先以荣耀手机为例,简单看—下通知管理的思路。...
  • 实现Android推送功能,选择了接入华为推送和小米推送,结果步入了华为推送的一个神坑????,需求其实很简单,就是服务器发个消息,客户端收到后显示,用户点击跳转到对应界面,应用未启动则启动应用跳转到对应界面...
  • android 悬浮窗设计(windowManager)
  • 想必大家以前都听过这么一段话,那就是无论什么手机...今天小编就以华为手机为例,教大家如果华为手机出现卡顿问题怎么解决,下面起来看看吧。1、 杂志锁屏有的人跟小编抱怨手机里乱七八糟的图片太多,占用大量空...
  • (3)通过“华为手机助手”、“同步助手”等软件全数据备份手机数据。 一、打开ADB调试开关 1、进入“设置” --> “关于手机”,连续点击7次“版本号”栏,屏幕将出现提示“您正处于开发者模式”。然后返回进入...
  • (一脸懵逼,以为又是什么麻烦的bug,因为以前很多问题,都是这位用他的华为手机给测出来的,各位程序员知道我此时对此人的那语言表的心情!)话不多说,有问题那就要改,但是由于现在公司用的手机有点惨...
  • 华为手机优化:关闭自动更新2020-03-10 17:43:358点赞8收藏0评论话说华为的系统更新是比较烦人的了,更新吧,会变慢;不更新吧,总是弹窗。趁着放假在家,就把我知道的一种方法发给大家,让大家免受更新烦恼之苦。1...
  • 我创建通知通道,以在Android 8.0中显示通知,如下所示NotificationChannel uploadChannel = new NotificationChannel(Constants.NOTIFICATION_CHANNEL_UPLOAD_ID,"Uploads", NotificationManager.IMPORTANCE_LOW);...
  • 最近项目中在完善推送功能,需要进入APP时检测一下是否开启了推送权限,如果没有开启弹窗提醒,当用户点击弹窗时直接跳转到APP的通知设置界面,就像下面这种: 就是这种效果 二、需求实现 1、检测是否开启通知...
  • Android华为推送自定义动作的实现

    千次阅读 2018-05-28 16:11:26
    集成了华为推送的都知道,自定义的广播继承PushReceiver,会有点击通知栏的回调方法OnEvent,可以做跳转或者数据处理。 但是关闭app的情况下,是无法响应OnEvent事件的,网上说可以自定义内容: 但是,经过测试...
  • 那是Android手机通知设置没弄好!在Android系统手机的设置内容中,“通知”是最容易被我们忽略的选项。实际上,如果你每天休息时都会被各种推送提醒打扰,又或是经常错过微信、邮箱、闲鱼等APP的重要消息,都能通过...
  • 先贴上代码,之后简单分析一下: ...import android.annotation.TargetApi import android.app.NotificationChannel import android.app.NotificationManager import android.app.PendingIntent i...
  • Android - 集成华为推送

    千次阅读 2020-12-24 10:00:53
    序言:刚尝试了在app中集成华为推送,这里简单做个记录,全部内容依据华为推送文档 开发流程 功能流程如下图所示: Step1与Step2:您的应用集成Push SDK,再调用HmsInstanceId类中的getToken方法获取到Push Token ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,177
精华内容 870
关键字:

华为android通知关闭