web-dev-qa-db-ja.com

「最近のアプリリスト」で画面を非表示にしますが、スクリーンショットは許可します

機密データが表示されているため、主に最近のアプリリストの画面を空白にします。このための解決策は、以下を使用することです。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

しかし、これはスクリーンショットも許可しません。これは問題です。

スクリーンショットを許可しながら、最近のアプリリストに空白の画面(または事前定義された画像)を表示する方法はありますか?

17
rajath

必要なのは:

_Android:excludeFromRecents="true"
_

それを<activity>(activity you want to exclude from recents)</activity>内のAndroidマニフェスト

1
Strider

私はこの方法を試しましたが、機能しています。最近のリストで画面を空白にし、画面を許可するには、onPause()でフラグを設定し、onResume()でフラグをクリアします。

@Override
protected void onPause() {
  super.onPause();
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);
}

@Override
protected void onResume() {
    super.onResume();
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);     
}
11
Vrushab Maitri

アクティビティに機密データが表示されている場合は、セキュリティ上の理由から、ユーザーがスクリーンショットを作成できないようにすることをお勧めします。最近のアプリの画面でも気になるのなら、スクリーンショットを同時に気にしないのはなぜですか? Android OS SecureFlagは、データとスクリーンショットの機能を保護するように設計されていると思いますが、その目的を否定するだけです。
とにかくこの機能が必要な場合は、このフラグを使用して、すべての機密データを個別のアクティビティに移動してみてください。その場合、機密データを保護し、他のアプリのアクティビティでスクリーンショットを作成することができます。

1
VadymVL

いくつかの調査を行った後、私はこれが現時点では不可能であることに気づきました。

onCreateThumbnailはあなたが探している関数のようです。残念ながら、この機能は実装されていないか、少なくとも機能していないようです。

Ped7gが指摘したように、onCreateThumbnailは2014年以降「修正されません」。

また、 Android onCreateThumbnailリファレンスページ で非推奨のフラグが付けられています。

この機能はおそらく機能しません。

1
Robbe Roels