61

アプリを持っているのですが、起動時にAndroid端末のボタンを全て無効にしなければならないのですが、通話終了などを無効にすることに成功しました。ホームボタンのクリックを無効にする必要があります。クリック時にアクションを生成するべきではありません。

どんな提案でも大歓迎です

4

6 に答える 6

29

Intent.ACTION_MAINToddler Lock は BroadcastReciever を使用してカテゴリをリッスンしているだけだと確信していますIntent.CATEGORY_HOME。そのため、最初に起動すると、「このアプリケーションをデフォルトとして使用する」ボックスをチェックするように指示され、幼児ロックを選択するようになります。

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

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

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

それが理にかなっていることを願っています。これは単なる理論にすぎませんが、ほぼ 100% 確実にそのようになっています。

于 2010-04-16T01:19:53.857 に答える
18

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

@override

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

編集:

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

この4行のJavaコードはAndroidアプリケーションで何を意味しますか?

于 2011-06-16T05:19:02.327 に答える
11

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

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

HOME ボタンは常にアクティビティを (再) 起動します。フロヨで働いています。

于 2011-06-21T15:11:21.917 に答える
5

ここでは、ホーム ページに保持されている私の Android サンプル アプリケーションを見つけることができます。ホーム、戻る、通話、電源ボタンが無効になります。ユーザーは、パスワードを入力するだけでアプリケーションを終了できます。

于 2012-04-30T08:22:03.920 に答える
5

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

これで、ホーム キーを押しても同じ画面に留まるようになりました。

于 2010-12-27T11:50:10.307 に答える
2

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

@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();

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

于 2011-09-05T23:52:35.167 に答える