前幾天客戶反饋,其遇見一個問題,通過應用商店下載的apk在安裝的時候,只能點擊取消,無法點擊安裝按鈕。
這個問題首先經過查看代碼,沒有發現任何可疑的地方,因爲代碼中沒有任何地方去禁制這個按鈕的點擊屬性,因此其一直都是可以點擊的。
最終經過仔細排查發現了在此界面的佈局中,安裝按鈕比取消按鈕多了一個約束條件,android:filterTouchesWhenObscured="true"。佈局文件如下:
<Button
android:id="@+id/ok_button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dip"
android:layout_height="40dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:layout_weight="67"
android:filterTouchesWhenObscured="true"
android:textColor="#3c3c3c"
android:maxLines="1"
android:text="@string/next" />
經過對android:filterTouchesWhenObscured="true"屬性分析發現:安裝"按鈕控件設置filterTouchesWhenObscured屬性爲true,這個屬性會啓用過濾機制。啓用後,系統會在用戶啓動另外一個view的時候鎖定原先的view。比如當有警告,對話或其他視窗在view上面展示時就不在允許點擊view了。此舉主要是爲了方式第三方流氓軟件在應用程序安裝界面的上方顯示引導view。來誘導用戶安裝應用程序。原來谷歌想的倒是挺周到的,擔心其他應用在Packageinstall的界面上方設置引導VIew,來誘導用戶安裝應用,因此啓動了這個過濾機制。
通過上面的分析,我們已經找到了一絲線索,剩下的就是驗證,我們自己編寫apk,實現懸浮窗口,成功的復現出了問題。
目前發現,護眼寶這個應用會導致這個問題。