私はアプリケーションを持っています、それが起動したら、Androidデバイスのすべてのボタンを無効にする必要があります。クリック時のアクション。
すべての提案を高く評価
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%確信しています。
次のコードをアクティビティに追加します。
@override
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
編集:
これは、すべての古いバージョンのAndroidで機能します。ただし、はICS
およびJelly Beanでは機能せず、アプリでクラッシュします
これをメインアクティビティのmanifest.xmlに追加します。
<category Android:name="Android.intent.category.DEFAULT" />
<category Android:name="Android.intent.category.LAUNCHER" />
<category Android:name="Android.intent.category.HOME" />
[ホーム]ボタンは常にアクティビティを(再)起動します。 Froyoで動作します。
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
これで、ホームキーを押すと常に同じ画面が表示されます。
こちら ホームページにあるmy Androidサンプルアプリケーションを見つけることができます。ホーム、戻る、呼び出し、電源ボタンは無効です。ユーザーは入力するだけでアプリケーションを終了できます。パスワード。
ジェフリーズの投稿へのさらなる追加は、ここで私のために働いたものです(そしてまだ半透明のテーマを許可します)
@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();
これは、独自のキーガードアプリを作成するのに非常に有効です。