12

Honeycomb では、TYPE_SYSTEM_OVERLAY でシステム オーバーレイを作成し、FLAG_WATCH_OUTSIDE_TOUCH でタッチを受け取ることができました。

今、ICSは何かを変えました。システム オーバーレイを作成することはできますが、タッチできません。

今、私はTYPE_SYSTEM_ALERTで同じものを作成してタッチすることができますが、タッチイベントをキャッチするだけで、ハニカムのようにそれらを渡しません。

何か案は?

敬具

4

2 に答える 2

24

オーバーレイ ビューを作成するには、LayoutParams を設定するとき にタイプを に設定しないTYPE_SYSTEM_OVERLAYでください。

代わりに に設定しTYPE_PHONEます。

次のフラグを使用します。

FLAG_NOT_TOUCH_MODAL

FLAG_WATCH_OUTSIDE_TOUCH

FLAG_NOT_TOUCH_MODAL << これはかなり重要だと思いました。これがないと、フォーカスがオーバーレイに与えられ、ソフトキー (ホーム、メニューなど) の押下が下のアクティビティに渡されません。

于 2013-01-04T01:40:41.613 に答える
7

あなたが説明することはすべて真実です。前者の振る舞いがタップジャック攻撃の原因であったため、おそらくセキュリティを強化することになるでしょう。最近、この変更についてブログに投稿しました。

何か案は?

どちらも使用しないでください。

于 2012-03-11T15:26:39.037 に答える