1. ホーム
  2. android

[解決済み] アプリがバックグラウンドになったときに、Androidがスクリーンショットを撮るのを防ぐにはどうすればよいですか?

2022-04-25 18:26:29

質問

現在作っているアプリで、セキュリティ上の理由からアプリがバックグラウンドに追いやられているときに、OSがスクリーンショットを撮れないようにしなければならないという要件があります。この方法では、アプリを切り替えるときに、最後にアクティブだった画面を見ることができません。

この機能をアプリケーションクラスのonPauseメソッドに搭載しようと思っているのですが、まず、この機能をどのように実現したらよいかを調べる必要があります。

どなたか、この問題を解決する手がかりをお持ちの方はいらっしゃいませんか?

解決方法は?

試す FLAG_SECURE :

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

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

    setContentView(R.layout.main);
  }
}

これにより、手動によるスクリーンショットやICSの最近のタスク履歴からの自動スクリーンショットに対する安全性が確保されます。また、画面録画(例:メディアプロジェクションAPIを使用するアプリ)に対しても安全です。

アップデイト また、Android 6.0のNow On Tapやその他のアシスタントに対しても安全です。ユーザーがアシスタントを起動しても、UI内のウィジェットやコンテナの詳細にアクセスすることはできません。

アップデイトその2 しかし、アクティビティ内のすべてが保護されるわけではありません。すべてのポップアップウィンドウは Dialog , Spinner , AutoCompleteTextView やアクションバーのオーバーフローなど、安全性が損なわれます。を修正することができます。 Dialog を呼び出すことで、この問題を解決することができます。 getWindow() を設定し、その上で FLAG_SECURE . あとは...難しいですね。参照 このブログの記事 をご覧ください。