2011-07-20 45 views
13

我想知道是否有方法通過某些「onXXXXX」回調方法檢測到或接收到廣播,如果其他進程正在拍攝我的應用程序顯示屏幕截圖。例如,如果SDK工具或其他屏幕捕獲應用程序執行「屏幕捕獲」,我希望收到通知,然後決定是否允許或不允許屏幕捕獲。阻止在Android應用程序中捕獲屏幕

如果這是不可能的,是否有辦法鎖定顯示器,以便其他進程不能屏幕捕獲我的顯示器?

回答

5

no supported method可以截取Android上的其他應用。唯一的方法是使用生根或使用SDK,這兩者都不會阻止或接收通知。如果其他應用程序佔用您的屏幕截圖,則默認情況下會使用不支持的方法,並且可能會按照您的喜好進行操作。

我想澄清一下,我不是暗示你不應該使用任何可用的方法來保護你的應用程序。我只是讓你知道,如果不使用不支持的方法,這可能是不可能的,而且即使你使用它們,你也可能無法百分之百保護屏幕截圖。

+0

實際上,這些功能在官方資源中已經開始出現,並且可以在非root應用程序的許多供應商設備上使用。 –

+0

儘管如此,它們在API文檔中才是官方的。我只是說,因爲截取屏幕截圖的任何方法目前都不受支持,或者直接來自SDK,因此很可能沒有官方方法與其進行交互。 –

+0

'View.getDrawingCache(boolean autoScale)''?該文件顯示:_返回該視圖圖形緩存的位圖._ – iDroid

18

這個工作對我的三星標籤2 7"

使用the following approach,簡單地將FLAG_SECURE添加到窗口標誌

public class FlagSecureTestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getWindow().setFlags(LayoutParams.FLAG_SECURE, 
         LayoutParams.FLAG_SECURE); 

    setContentView(R.layout.main); 
    } 
} 

與您可能需要更改警告

LayoutParams 

WindowManager.LayoutParams 
+0

這個工作,應該是大多數開發人員的答案。 –

+0

無法在7.0環境模式下工作.. –