2016-04-28 4 views
20

Androidは、android.permission.SYSTEM_ALERT_WINDOWを使用してアプリケーションが他のアプリケーションを上書きすることを可能にし、フローティング/オーバーレイアプリケーションと呼ばれています。たとえば、Facebookのメッセンジャーでは、画面の端に常にチャットバーが表示されます。Androidはフローティング/オーバーレイアプリケーションを検出またはブロックします

私の質問は次のとおりです。Javaコードで、自分のアプリケーションを描画するすべてのアプリケーションを検出またはブロックできますか?

+0

新しいバージョンでは、画面の録画許可を依頼したり、描画したものと画面上の内容を比較したりできます。 –

答えて

8

モーションイベントがFLAG_WINDOW_IS_OBSCUREDであるかどうかを検出するためにオーバーライドできるView#onFilterTouchEventForSecurity()メソッドがあります。これは、あなたの視点の上に何かが描かれているかどうかを知らせます。

@Override 
public boolean onFilterTouchEventForSecurity(MotionEvent event) { 
    if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) == MotionEvent.FLAG_WINDOW_IS_OBSCURED){ 
     // show error message 
     return false; 
    } 
    return super.onFilterTouchEventForSecurity(event); 
} 

あなただけのため、あなたのアプリケーションを介して別のアプリの描画にタップジャッキからアプリケーションを保護したい場合は、XMLを介して、またはプログラムによって、あなたの意見にsetFilterTouchesWhenObscuredを追加することができます。

+0

ありがとうございました。それが動作しているかどうかを確認してお知らせします。 –

+0

ありがとうございます。 –

関連する問題