アプリを持っているのですが、起動時にAndroid端末のボタンを全て無効にしなければならないのですが、通話終了などを無効にすることに成功しました。ホームボタンのクリックを無効にする必要があります。クリック時にアクションを生成するべきではありません。
どんな提案でも大歓迎です
アプリを持っているのですが、起動時にAndroid端末のボタンを全て無効にしなければならないのですが、通話終了などを無効にすることに成功しました。ホームボタンのクリックを無効にする必要があります。クリック時にアクションを生成するべきではありません。
どんな提案でも大歓迎です
Intent.ACTION_MAIN
Toddler Lock は BroadcastReciever を使用してカテゴリをリッスンしているだけだと確信しています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
、アプリでクラッシュします
これをメイン アクティビティの manifest.xml に追加します。
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
HOME ボタンは常にアクティビティを (再) 起動します。フロヨで働いています。
ここでは、ホーム ページに保持されている私の Android サンプル アプリケーションを見つけることができます。ホーム、戻る、通話、電源ボタンが無効になります。ユーザーは、パスワードを入力するだけでアプリケーションを終了できます。
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"/>
現在、アプリケーションは代替ランチャー アプリケーションです。
adb を使用し、パッケージ マネージャーを使用してランチャー アプリケーションを無効にします
pm disable com.android.launcher2
これで、ホーム キーを押しても同じ画面に留まるようになりました。
ジェフリーの投稿へのさらなる追加、これは私のために働いたものです(そしてまだ半透明のテーマを許可しています)
@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();
これは、独自のキーガード アプリを作成する場合に非常に効果的です。