弊社の一部の機種に搭載されている、HOMEキー+電源キー同時押しによる画面キャプチャ機能のことを指します。
コンテンツ保護のため、アプリケーションがスクリーンショットを禁止したい場合、本体のスクリーンショット機能に対し、アプリケーションからこのIntentを 発行することで、スクリーンショットを抑止する機能を搭載できます。
スクリーンショット抑止機能の制御は、本体が行います。
具体的には、アプリケーションが本体側にブロードキャストインテントを発行することにより、本体がスクリーンショット可否を制御するようになります。
スクリーンショット抑止機能の搭載でアプリケーション側で実装が必要なのは、Intentの発行のみです。
○スクリーンショット抑止のIntent
スクリーンショットを抑止するには以下のIntentを指定します。
パラメータ | 定数名 |
---|---|
Action | jp.co.sharp.android.intent.action.DISABLE_SCREENSHOT |
Extra | jp.co.sharp.android.intent.extra.disable.PACKAGE_ACTIVITY_NAME |
○Intentの発行から制御の設定/解除について
1)アプリケーションの起動時に上記IntentをBroadcastする。このとき禁止したいパッケージ名を指定する。
-------- 以下は本体が制御します --------
2)スクリーンショット禁止モードになる。
3)指定されたパッケージのActivityが起動している間は常にスクリーンショットを禁止する。
4)当該パッケージのActivityが終了していれば再びスクリーンショットを撮れるようになる。
スクリーンショット抑止機能が搭載されている機種には下記のFeatureが定義されています。
jp.co.sharp.android.screenshot.disable
このFeature定義を参照することで、アプリの挙動を変えることができます。
スクリーンショット抑止Intentに対応した機種にのみアプリを配信することも可能です。
Manifestファイルの<manifest>の子要素に<uses-feature>を追加します。
<uses-feature>の android:name属性にはjp.co.sharp.android.screenshot.disable を設定します。
<uses-feature>を設定することにより、弊社端末のスクリーンショット抑止Intent搭載機種以外でGoogle Playにアクセスした場合に表示されないようになります。
※注意※
jp.co.sharp.android.intent.extra.disable.PACKAGE_ACTIVITY_NAMEの値としてExtrasへputするのはアプリケーションのパッケージ名です。
Intent通知で引き渡されたパッケージ名配下のActivity(アプリケーション)に対し、スクリーンショット抑止機能が働きます。
本機能に対応しない端末では、ブロードキャストインテントが無視されるため、動作に影響はありません。
抑止宣言したアプリがバックグラウンドに存在する場合もスクリーンショットを抑止します。
これは透明なActivityが前面にいるときへの対策です。
なお、将来の機種では透過なActivityへの対策を施し、スクリーンショットを抑止しているアプリがフォアグラウンドの場合のみスクリーンショットを抑止するようになることが考えられますので、抑止したいアプリは、起動中アプリの構成によらず抑止宣言して下さい。
AddOnのエミュレータにスクリーンショット機能自体が非搭載のため、抑止機能を利用したサンプルは正常に動作しません。動作確認には、抑止機能搭載の実機でご確認ください。