82

Android アプリケーションでホーム ボタンやその他のシステム ボタンを無効にする必要があります。

例: MX Player ( Google Play を参照) - プレーヤー画面で「ロック」アイコンを押すと、すべてのハードウェアおよびソフトウェア システム ボタンがロックされます。

ルート化なしで正常に動作します。

Android のバージョンが異なるいくつかのデバイスでテストしました。Kids Lock(プラグイン)を分解してみましたが、まだ仕組みがわかりません。

Kids Lock (プラグイン) のような同じソリューションが必要ですMX Player: - ホーム、戻る、その他すべてのシステム ボタンを無効にします。

助言がありますか?

4

18 に答える 18

94

Home最初に、ボタンやその他のボタン (ボタンなど)を本当に無効にしたい場合は、よく考えてください。Backこれはすべきことではありません (少なくともほとんどの場合、これは悪い設計です)。 )。自分のことしか言えませんが、OS ボタンをクリックできないようなアプリをダウンロードした場合、次にそのアプリをアンインストールして、非常に悪いレビューを残します。また、あなたのアプリが App Store で取り上げられることはないと思います。

今...

MX Player他のアプリケーションの上に描画する許可を求めていることに注意してください: デバイスのボタンをMX プレーヤーのアクセス許可
オーバーライドできないため(少なくとも最新の OS バージョンではありません)。アプリを「ロック」してボタンをクリックすると、ランチャーの上に自分自身を描画します。 もう少しシンプルで理解しやすい例を確認するには、Facebook Messenger Appを参照してください。HomeAndroidMX PlayerHome

Status BarMX PlayerとNavigation Bar「オーバーライド」についてさらに情報を提供するように求められたので、これらのトピックも含めるように回答を編集しています。

まず最初に、MX Player は でImmersive Full-Screen Mode ( DevBytes Video ) を使用していKitKatます。
Android 4.4 (API レベル 19) では、setSystemUiVisibility()に新しいSYSTEM_UI_FLAG_IMMERSIVEフラグが導入され、アプリを真の「全画面表示」にすることができます。このフラグをSYSTEM_UI_FLAG_HIDE_NAVIGATIONおよびSYSTEM_UI_FLAG_FULLSCREENフラグと組み合わせると、ナビゲーション バーとステータス バーが非表示になり、アプリで画面上のすべてのタッチ イベントをキャプチャできるようになります。

没入型フルスクリーン モードが有効になっている場合、アクティビティは引き続きすべてのタッチ イベントを受け取ります。ユーザーは、システム バーが通常表示される領域に沿って内側にスワイプして、システム バーを表示できます。これにより、SYSTEM_UI_FLAG_HIDE_NAVIGATIONフラグ (および適用されている場合はSYSTEM_UI_FLAG_FULLSCREENフラグ) がクリアされ、システム バーが表示されるようになります。これは、設定されている場合、 View.OnSystemUiVisibilityChangeListenerもトリガーします。ただし、しばらくするとシステム バーが自動的に再び非表示になるようにする場合は、代わりにSYSTEM_UI_FLAG_IMMERSIVE_STICKYフラグを使用できます。このモードで一時的に表示されるシステム バーは一時的な状態であるため、フラグの「スティッキー」バージョンはリスナーをトリガーしないことに注意してください。

2 番目:ステータス バーを非表示にする
3 番目:ナビゲーション バーを非表示にする 没入型フル スクリーンの使用は のみですが、とを非表示にするのは だけではない
ことに注意してください。KitKatStatus BarNavigation BarKitKat

2 番目と 3 番目については多くを語ることはありません。View.OnSystemUiVisibilityChangeListenerに細心の注意を払うようにしてください。

私が何を意味するかを説明する Gist を追加しました。完全ではなく、修正が必要ですが、アイデアは得られます。https://gist.github.com/Epsiloni/8303531

これを実装して頑張ってください。楽しんでください!

于 2014-01-06T07:54:34.103 に答える
3

Android 5.0 以降を対象とする場合。あなたが使用することができます:

Activity.startLockTask()
于 2016-02-05T05:27:54.437 に答える
0

ICS の後、つまり Android 4 以降では、アプリケーションがマルウェアであることが判明した場合にユーザーが終了できるように、セキュリティ上の理由からホームボタンのオーバーライドが削除されました。

さらに、ユーザーがアプリケーションから離れないようにすることは、あまり良い方法ではありません。しかし、ロック スクリーン アプリケーションを作成しているので、できることは、アクティビティを Launcher として宣言することです。これにより、 HomeButton が押されたときに、アプリケーションを再起動してそこにとどまることができます (ユーザーはわずかなちらつきだけに気付くでしょう)。画面で)。

次のリンクから移動できます。

http://dharmendra4android.blogspot.in/2012/05/override-home-button-in-android.html

于 2014-01-07T13:12:04.030 に答える
0

ICS onwords からホームボタンを無効にすることはできませんが、次のように他のボタンを無効にすることができます

@Override
public boolean dispatchKeyEvent(KeyEvent keyEvent){
   return true;
}
于 2014-01-07T07:27:43.253 に答える
-3

2~3年ぶりの回答ですみません。ただし、すべてのシステム ボタンのアクティビティを非表示にすることができます。これを私の回答で確認してください。アクティビティで仮想ホームボタンを無効にする方法は? .

于 2016-01-21T13:35:25.777 に答える