画面をロックしたい。ホームキーを無効にして、バックキーのみを使用したい。どうすればこれを達成できますか?
84385 次
5 に答える
30
このメソッドを使用して、Android のホーム キーを無効にします。
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
于 2011-11-01T09:22:05.313 に答える
23
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"/>
これで、アプリケーションは代替のLauncherアプリケーションになります。
adbを使用し、パッケージマネージャーを使用してランチャーアプリケーションを無効にします
pm disable com.android.launcher2
これで、ホームキーを押しても常に同じ画面が表示されます。
于 2010-12-27T11:45:57.767 に答える
13
このソリューションは 3.x までしか機能しません。
わかりました、これは難しい質問になるはずでした。しかし、ここにそれを破る方法があります。
アクティビティで以下のメソッドをオーバーライドし、
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
そして、キーイベントを次のように処理します。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
Log.i("Home Button","Clicked");
}
if(keyCode==KeyEvent.KEYCODE_BACK)
{
finish();
}
return false;
}
于 2012-01-17T05:05:09.683 に答える
9
MainActivity
このコードをクラスに追加します。
Timer timer;
MyTimerTask myTimerTask;
@Override
protected void onResume() {
super.onResume();
if (timer != null) {
timer.cancel();
timer = null;
}
}
@Override
protected void onPause()
{
if (timer == null) {
myTimerTask = new MyTimerTask();
timer = new Timer();
timer.schedule(myTimerTask, 100, 100);
}
super.onPause();
}
private void bringApplicationToFront()
{
KeyguardManager myKeyManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
if( myKeyManager.inKeyguardRestrictedInputMode())
return;
Log.d("TAG", "====Bringging Application to Front====");
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
try
{
pendingIntent.send();
}
catch (PendingIntent.CanceledException e)
{
e.printStackTrace();
}
}
public void onBackPressed() {
// do not call super onBackPressed.
}
class MyTimerTask extends TimerTask {
@Override
public void run() {
bringApplicationToFront();
}
}
「ホーム」ボタンのロックではありませんが、ユーザーは長時間 (100 ミリ秒以上) 別のアプリに切り替えることができません。これが必要な場合があります。
于 2015-11-19T13:54:28.257 に答える
1
ホームボタンを無効にするには、これを試してください:
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
通知バーがプルダウンされる問題は、次のように通知バーを非表示にすることで解決できます。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.xxxx);
getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN);
....
}
または、マニフェストでアクティビティまたはアプリケーションのフルスクリーン テーマを設定します。
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
于 2013-03-11T00:27:41.937 に答える