解決通知欄權(quán)限禁止時(shí)丽啡,不彈出Toast問(wèn)題
項(xiàng)目里使用Toast時(shí)不知道有木有遇到跟我同樣困惑的童鞋谋右?
1、自定義系統(tǒng)Toast彈入补箍,彈出動(dòng)畫
2改执、某些品牌手機(jī)里,如果權(quán)限管理上禁止了“通知欄消息”權(quán)限時(shí)坑雅,Toast顯示不出來(lái)辈挂。(這里以魅族手機(jī)為例,不同廠家手機(jī)可能權(quán)限名不一樣裹粤,但大概意思差不多)
下面是個(gè)人對(duì)這解決這兩個(gè)問(wèn)題的一個(gè)總結(jié)终蒂。
1、自定義Toast動(dòng)畫
關(guān)于Taost的自定義動(dòng)畫遥诉,google官方其實(shí)是沒(méi)有直接暴露更改動(dòng)畫的api拇泣。通過(guò)查看源碼,可以知道系統(tǒng)Toast的動(dòng)畫代碼是TN里面實(shí)現(xiàn)的矮锈,遺憾的是TN被私有了霉翔。那么想要直接通過(guò)這個(gè)方法來(lái)更改動(dòng)畫是不行了,只有使用反射去實(shí)現(xiàn)了
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苞笨、權(quán)限限制Toast彈出
主要感謝csdn上大神提供的解決方案
http://blog.csdn.net/a3676212/article/details/51830299
Demo代碼量有點(diǎn)多债朵,已放到github