web-dev-qa-db-ja.com

Android-ホームボタンのクリックを無効にすることは可能ですか?

私はアプリケーションを持っています、それが起動したら、Androidデバイスのすべてのボタンを無効にする必要があります。クリック時のアクション。

すべての提案を高く評価

61

Toddler LockはBroadcastRecieverを使用し、Intent.ACTION_MAINおよびカテゴリIntent.CATEGORY_HOME-それが最初に起動したとき、「このアプリケーションをデフォルトとして使用する」ボックスをチェックするように指示し、幼児ロックを選択させる理由です。

したがって、ホームボタンを実際にブロックするわけではなく、次のデフォルトのブロードキャストレシーバーとして設定するだけです。

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);

Toddler Lockを起動すると、おそらく内部フラグが設定され、ホームボタンを押すと、ウィンドウが前面に表示されるだけです。フラグが設定されていない場合、おそらくLauncherを明示的に起動します。

それが理にかなっていることを願っています。それは単なる理論ですが、それがどのように行われるかはほぼ100%確信しています。

29
synic

次のコードをアクティビティに追加します。

@override

public void onAttachedToWindow()
{  
       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
       super.onAttachedToWindow();  
}

編集:

これは、すべての古いバージョンのAndroidで機能します。ただし、ICSおよびJelly Beanでは機能せず、アプリでクラッシュします

この4行JavaコードはAndroidアプリケーション?

18
Jeffrey

これをメインアクティビティのmanifest.xmlに追加します。

<category Android:name="Android.intent.category.DEFAULT" />
<category Android:name="Android.intent.category.LAUNCHER" />
<category Android:name="Android.intent.category.HOME" />

[ホーム]ボタンは常にアクティビティを(再)起動します。 Froyoで動作します。

11
Jean-François

HOMEキーに取り組む方法を見つけました。アプリケーションでは、マニフェストを次のように設定します

<action Android:name="Android.intent.action.MAIN" /> 
<category Android:name="Android.intent.category.HOME" /> 
<category Android:name="Android.intent.category.DEFAULT" />                            
<category Android:name="Android.intent.category.MONKEY"/>

現在、urアプリケーションは代替ランチャーアプリケーションです。

Adbを使用し、パッケージマネージャーを使用してランチャーアプリケーションを無効にします

pm disable com.Android.launcher2

これで、ホームキーを押すと常に同じ画面が表示されます。

5
amiekuser

こちら ホームページにあるmy Androidサンプルアプリケーションを見つけることができます。ホーム、戻る、呼び出し、電源ボタンは無効です。ユーザーは入力するだけでアプリケーションを終了できます。パスワード。

5
davide.gironi

ジェフリーズの投稿へのさらなる追加は、ここで私のために働いたものです(そしてまだ半透明のテーマを許可します)

@Override
public void onAttachedToWindow()
{  
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);     
    super.onAttachedToWindow();  
}

キーガードが表示されるため、アプリの使用中はキーガードを無効にすることもできます。

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();

これは、独自のキーガードアプリを作成するのに非常に有効です。

2
Richard Rout