天天看點

android 7.1懸浮窗系統權限問題

轉載請标明出處: <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,也是需要增加判斷的。

|| 版權聲明:本文為部落客杜錦陽原創文章,轉載請注明出處。