解决通知栏权限禁止时,不弹出Toast问题

解决通知栏权限禁止时,不弹出Toast问题

项目里使用Toast时不知道有木有遇到跟我同样困惑的童鞋?

1、自定义系统Toast弹入,弹出动画

2、某些品牌手机里,如果权限管理上禁止了“通知栏消息”权限时,Toast显示不出来。(这里以魅族手机为例,不同厂家手机可能权限名不一样,但大概意思差不多)


下面是个人对这解决这两个问题的一个总结。



1、自定义Toast动画

关于Taost的自定义动画,google官方其实是没有直接暴露更改动画的api。通过查看源码,可以知道系统Toast的动画代码是TN里面实现的,遗憾的是TN被私有了。那么想要直接通过这个方法来更改动画是不行了,只有使用反射去实现了

Toast  mToast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
    try {
        Object mTN = null;
        mTN = getField(mToast, "mTN");
        if (mTN != null) {
            Object mParams = getField(mTN, "mParams");
            if (mParams != null
                    && mParams instanceof WindowManager.LayoutParams) {
                WindowManager.LayoutParams params = (WindowManager.LayoutParams) mParams;
                params.windowAnimations = R.style.custom_animation_toast;
            }
        }
    } catch (Exception e) {
    }

2、权限限制Toast弹出

主要感谢csdn上大神提供的解决方案

http://blog.csdn.net/a3676212/article/details/51830299

Demo代码量有点多,已放到github

https://github.com/cenxiaoping/ToastDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,544评论 25 708
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,124评论 8 183
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,255评论 4 61
  • 文/孤鸟差鱼 生活里的主力军 变成爱期待不期待的鱼
    孤鸟差鱼阅读 159评论 0 3
  • 山一程,水一程,身向榆关那畔行,夜深千帐灯。风一更,雪一更,聒碎乡心梦不成,故园无此声。 元宵快乐!
    迟慕良阅读 140评论 0 0