华为honor机型,Toast组件不显示,我试过各种方式都不显示,其他厂商的机型都正常显示,就华为的不行,希望了解的朋友,帮忙解释下,这是什么原因,不胜感激。
解决方法:
通知是不是关闭了
设置 应用程序 找到你对应的程序 勾选显示通知
转:http://www.eoeandroid.com/thread-542297-1-1.html
我们在写项目的时候,会用多很多的提示语!为了简便,我们不需要很复杂的展示效果,所以在我们一般人都会用到Toast,当然这个用起来很方便。
但是问题来的真是猝不及防,忽然有人反应说是怎么很多地方没有提示语了?(一脸懵逼,以为又是什么麻烦的bug,因为以前很多问题,都是这位用他的华为手机给测出来的,各位程序员知道我此时对此人的那语言表的心情!)话不多说,有问题那就要改,但是由于现在公司用的手机有点惨不然度(4.0的系统来测试~~~),只能拿来他的手机测试,看了看接口,代码什么的都正常。那很容易就想到又是华为手机的兼容问题了!!
度娘一查,果真如此,说是部分手机在关闭通知设置后,Toast就不提示了!
本来打算,自己写一个简单的view来实现这个效果,但是事与愿违,感觉不怎么好。所以在偶然间看到了这个Toast控件:
ToastUtils,大体看了一下。确实兼容还是那个面的问题,所以就简单写了个demo试了一下,确实可以,又简单。还可以设置自定义的Toast。
具体用法:
集成步骤
dependencies { implementation 'com.hjq:toast:5.2' }
初始化Toast
// 在Application中初始化 ToastUtils.init(this);
显示Toast
ToastUtils.show("我是吐司");
获取Toast对象
ToastUtils.getToast();
设置Toast布局
ToastUtils.setView();
自定义Toast样式
如果对Toast的默认样式不满意,可以在Application初始化样式,具体可参考ToastBlackStyle类的实现
ToastUtils.initStyle(new IToastStyle());
框架亮点
无需权限:不管有没有授予通知栏权限都不影响吐司的弹出
功能强大:不分主次线程都可以弹出Toast,自动区分资源id和int类型
使用简单:只需传入文本,会自动根据文本长度决定吐司显示的时长
性能最佳:单例吐司,整个Toast只有一个TextView,并且通过代码创建
体验最优:限制Toast短时间内弹出的次数,避免频繁弹出造成不良的用户体验
支持多种样式:默认为黑色样式,夜间模式可使用白色样式,还有仿QQ吐司样式
支持自定义样式:吐司(背景、圆角、重心、偏移),文字(大小、颜色、边距)
支持自定义扩展:支持获取ToastUtils中的Toast对象,支持重新自定义Toast布局
支持全局配置样式:可以在Application中初始化Toast样式,达到一劳永逸的效果
框架兼容性良好:本框架不依赖任何第三方库,支持Eclipse和Studio的集成使用
这是从大神的Github上copy过来的,具体步骤可以看一下:https://github.com/getActivity/ToastUtils
反正问题解决了,麻烦的是要更改代码中原本分装好的Utils,不说了,去改了!!!
1. 前言
最近需要实现一个不会打开呼吸灯、不会震动和没声音的通知,查找了很多资料,但没有一个写得完整的。东凑凑,西凑凑,自己摸索了几个小时,找到了一种较可靠的方式。
2. 解决方案
这种方案兼容到了Android 8.0,三星、华为和小米手机都有效果。
NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Notification.Builder builder = new Notification.Builder(context) .setContentTitle(context.getString(R.string.app_name)) .setContentText("有待办消息未读") .setSmallIcon(R.mipmap.ic_launcher) .setWhen(System.currentTimeMillis()) .setDefaults(NotificationCompat.FLAG_ONLY_ALERT_ONCE) .setVibrate(new long[]{0}) .setSound(null); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel("to-do", "待办消息", NotificationManager.IMPORTANCE_HIGH); channel.enableLights(false); channel.enableVibration(false); channel.setVibrationPattern(new long[]{0}); channel.setSound(null, null); notificationManager.createNotificationChannel(channel); builder.setChannelId("to-do"); } Notification notification = builder.build(); notificationManager.notify(0, notification);
如果想进一步交流和学习的同学,可以加一下QQ群哦!
一般推送的需求,大家都知道,点击推送的通知,跳转到某个页面,根据通知传过来的数据,比如url,去打开一个页面。
集成了华为推送的都知道,自定义的广播继承PushReceiver,会有点击通知栏的回调方法OnEvent,可以做跳转或者数据处理。
但是关闭app的情况下,是无法响应OnEvent事件的,网上说可以自定义内容:
但是,经过测试,关闭app的情况下,这个方法也无济于事。
所以,这不是解决问题的根本,解决问题的方法,应该注意到这个方式:
这个方式有个介绍:
看到这里,问题就解决了。。。。。。shit,原谅我是个菜鸟,这tm写的什么完全看不懂。
慢慢摸索吧。。。
它要一个Uri路径,那就给它:
1.定义一个类,用来做中介,就是你点击通知之后跳转的类!如果不设置,就是打开app,然后跳不到你要的界面咯
2.在这个类里面,实现下面的方法:
推送平台的uri怎么填呢?
给你一个参考
intent://com.hua.demo/push_detail?url=#Intent;scheme=myscheme;launchFlags=0x10000000;component=com.hua.demo/.activty.HuaweiPushCustomActivity;end
3.把上面的uri填到框里
你会问,我要的参数呢?你上面说传一个url在哪?
请注意:
这个url= 就是我自定义的参数,你后面可以带一个链接。比如url=www.baidu.com
你会问我,我带其他参数可以吗? 答案是可以。
?跟 # 之间的参数,你可以自己定义,其他的参数,直接跟我写一样的也行,自己定义也行,但是要跟你AndroidManifest.xml里的配置保持一致。
然后你接到这个字符串,自己去截取就ok啦~
好了,大概就是这么个流程,记录下开发过程,以后不在采坑~
还不明白的可以留言~或者加我 微信MRyinwending 询问我~(虽然我也是个菜鸟。。)
good bye~
----------------------------------------------------这是一条分割线-------------------------------------------------------------
2018/6/12号收到码友的反馈,华为推送自定义动作存在一个问题:
在app关闭的情况下由通知栏吊起,再推送的话,点击通知栏没有反应,无法进入我们的中转activity进行处理。
解决办法:
1.我们发现,中转activity添加的标签:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这个标签要跟
成对存在!
引号里填写中转activity完整路径就行。
以为大功告成,没想到还会出现问题:
由通知栏启动之后,再点击通知,点击清除按键会出现两个app界面
解决办法:
添加该属性:
设置为 true!
这下大功告成!
具体原理可以参考:
https://blog.csdn.net/goodlixueyong/article/details/49620667
https://www.aliyun.com/jiaocheng/13718.html
ok~
华为honor机型,Toast组件不显示,我试过各种方式都不显示,其他厂商的机型都正常显示,就华为的不行,希望了解的朋友,帮忙解释下,这是什么原因,不胜感激。
解决方法:
通知是不是关闭了
设置 应用程序 找到你对应的程序 勾选显示通知
转:http://www.eoeandroid.com/thread-542297-1-1.html
转载于:https://www.cnblogs.com/childhooding/p/4493764.html