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

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

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

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

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


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


解决通知栏权限禁止时,不弹出Toast问题_第1张图片

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

你可能感兴趣的:(解决通知栏权限禁止时,不弹出Toast问题)