轉載請标明出處: <a href="http://blog.csdn.net/DJY1992/article/details/77942568">http://blog.csdn.net/DJY1992/article/details/77942568</a> 本文出自:【奧特曼超人的部落格】
很多人問小米系統是不是需要單獨處理授權問題,其實授權問題都是類似的,在Android 5.0之後系統權限要求越來越嚴格,當然,5.0系統bug比較多,相容性不太好,是以出來沒多久就直接問世了,在Android 6.0之後才趨于平穩,系統更新也比較快,權限問題也是我們必須處理的一個問題,還有一點,就是7.0之後的某些版本使用吐司Toast會引起crash。
我們來看下權限的流程:
彈出對話框詢問
成功則進入
失敗進入詢問
失敗則“設定”
拒絕不處理
如果拒絕權限則會出現以下異常:
可以看到報了<code>Unable to add window</code> 和 <code>permission denied for this window type</code>
是以我們xml配置檔案記得要把權限配置上,在Android 7.0之前都是可以正常使用的,包括7.0的系統,但是如果在7.1.1沒有進行特别處理的話是會出現如下錯誤:
可以看到報了<code>Unable to add window</code> 和 <code>has already been added</code>
那是因為 WindowManagerGlobal 在 AddView 的時候會進行預處理 View,此處更新的标志位是TYPE_TOAST,在handle裡面增加了TYPE_PHONE,是以我們在申請懸浮窗處理的時候也要增加判斷,不然則會抛出異常。
其實很簡單,在申請的時候增加下判斷就可以了。
解決方法:
申請權限可參考:
注意:注意 WindowManagerGlobal 中的View,也包括Toast,是以如果在調用時用了Toast就會報錯,會報同樣的錯誤,<code>Unable to add window -- window</code> 和 <code>has already been added</code>,吐司崩潰,如果想要使用Toast,也是需要增加判斷的。
|| 版權聲明:本文為部落客杜錦陽原創文章,轉載請注明出處。