2017-06-09 1 views
0

スクリーンオーバーレイがアクティブな間にユーザーが実行時アクセス許可を許可するようにアプリから要求された場合、システムはスクリーンオーバーレイが検出されたという警告を表示します。ユーザーは実際に許可するまで手動でスクリーンオーバーレイを非アクティブにする必要があります許可。このようなことは、UXの観点からはうんざりです。実行時アクセス許可が要求されたときに、画面オーバーレイがどのように検出され(自分自身を無効にする)?

最近では、Facebookのメッセンジャー(チャットヘッド) - のようなアプリを見たことがあります。許可が要求されたときに自動的に画面オーバーレイを無効にし、許可されると再び有効になります。

どのようにこれらの作業を行い、どのように再現できますか?

これに関連するようなコールバックやブロードキャストは見つかりませんでした。

答えて

0

これは構成上の問題であったようですが、正しい構成で自動的に動作するためです。

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
      PixelFormat.RGBA_8888); 

は、以前私がTYPE_SYSTEM_OVERLAYを使用するだけでなく、TYPE_SYSTEM_ALERTで遊ん。これは、私には触れることができず、許可要求を「かわす」ことのないいくつかの問題をもたらしました。それとも触れることができますが、画面上のキーボードは使用できません。

この設定では、画面のキーボードが機能し、権限が要求されたときにオーバーレイ表示が自動的に非表示になり、恐ろしい画面オーバーレイ検出メッセージが表示されなくなります。

関連する問題