PackageInstall的应用程序安装界面,安装按钮无法点击,但是取消按钮可以正常点击
前几天客户反馈,其遇见一个问题,通过应用商店下载的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" />
前几天客户反馈,其遇见一个问题,通过应用商店下载的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,实现悬浮窗口,成功的复现出了问题。
目前发现,护眼宝这个应用会导致这个问题。