如要建立更標準化的螢幕截圖偵測體驗, Android 14 推出了可保護隱私權的螢幕截圖偵測功能 也能使用 Google Cloud CLI 或 Compute Engine API此 API 可讓應用程式依個別活動登錄回呼。這些 當使用者接受回呼時,系統會叫用使用者並通知使用者 螢幕截圖。
支援的用途
在 Android 14 中,只有在使用者執行 具體的硬體按鈕組合API 未偵測到 擷取的螢幕截圖、螢幕截圖、 包括 ADB,或在檢測設備測試中擷取裝置的 目前的畫面內容。
導入步驟
如要新增螢幕截圖偵測功能,請宣告新的 DETECT_SCREEN_CAPTURE
安裝期間權限:
<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
接著,針對應用程式中使用者可能會前往的每個活動完成上述步驟 擷取螢幕截圖:
覆寫
onScreenCapture()
函式以實作回呼。在本 您的應用程式可以採取行動,例如警告其他使用者 有人擷取了訊息對話的螢幕截圖。Kotlin
val screenCaptureCallback = Activity.ScreenCaptureCallback { // Add logic to take action in your app. }
Java
final Activity.ScreenCaptureCallback screenCaptureCallback = new Activity.ScreenCaptureCallback() { @Override public void onScreenCaptured() { // Add logic to take action in your app. } };
在活動的
onStart()
方法中,登錄螢幕截圖回呼。Kotlin
override fun onStart() { super.onStart() // Pass in the callback created in the previous step // and the intended callback executor (e.g. Activity's mainExecutor). registerScreenCaptureCallback(mainExecutor, screenCaptureCallback) }
Java
@Override protected void onStart() { super.onStart(); // Pass in the callback created in the previous step // and the intended callback executor (e.g. Activity's mainExecutor). registerScreenCaptureCallback(executor, screenCaptureCallback); }
在活動的
onStop()
方法中,取消註冊螢幕截圖回呼:Kotlin
override fun onStop() { super.onStop() unregisterScreenCaptureCallback(screenCaptureCallback) }
Java
@Override protected void onStop() { super.onStop(); unregisterScreenCaptureCallback(screenCaptureCallback); }
擷取螢幕畫面的控制功能
如果您不希望應用程式活動的內容顯示在螢幕截圖中,或
在非安全螢幕上,請設定 FLAG_SECURE
顯示標記。
Kotlin
activity.getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE)
Java
activity.getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);