2016-04-28 53 views
20

Android允許應用程序使用android.permission.SYSTEM_ALERT_WINDOW繪製其他應用程序,它被稱爲浮動/覆蓋應用程序。例如Facebook Messenger在屏幕邊緣總是有可見的聊天泡泡。Android檢測或阻止浮動/覆蓋應用程序

我的問題是:是否有可能在Java代碼中檢測或阻止繪製我的應用程序的任何應用程序?

+0

在較新的版本,你可以問來回屏幕錄製權限,並比較你畫的是什麼,並在屏幕上 –

回答

8

有一個View#onFilterTouchEventForSecurity()方法可以覆蓋以檢測動作事件是否有FLAG_WINDOW_IS_OBSCURED。這會讓你知道是否在你的視圖上繪製了一些東西。

@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

謝謝,它的作品像一個魅力! –