4

夜時計アプリがあり、アプリの実行中にデバイスが充電されている間、デバイスのキーガードを無効にしたいと考えています。充電器を使用していて、このアプリが実行されている場合、安全な場所にいると想定するのが妥当です。アプリが終了したとき (バックまたはホーム経由で)、ロック解除画面を表示したくありません。電話がデバイスのロック時間を超えてアイドル状態にならなかったかのように、通常の使用を許可します。

現在、私のアプリは FLAG_SHOW_WHEN_LOCKED ウィンドウ オプションを使用しており、画面をオンにしてロックを解除したままにしていますが、(ロック時間が経過した後) キーパッドのロック解除画面が表示され、デバイスのロックが解除されます。アプリが実行されていて、デバイスが充電器にあるときに、このような他のアプリのロックが発生しないようにしたいと考えています。私は明らかにこの機能をユーザーが選択する設定にしますが、これを実装するにはどうすればよいですか?

誰でもこれを手伝ってもらえますか - 私のグーグルの努力はすべて、私のアプリだけがロックされないようにすることを指していますが、私はすでにそれを解決しています.

ありがとう。

4

2 に答える 2

0

非システムアプリはキーガードを無効にすることはできません。最善の方法は、アプリをデバイス管理者にして、ロックする時間を増やすことです。ただし、これは時計アプリにとっては疑わしいと見なされる可能性があります。さらに、ユーザーがアプリを終了すると、通常、他のアプリやシステムで何が起こっているかを制御することはできません。これがAndroidの仕組みです。ホームキーを押した後、突然デバイスがロックされるのは不自然に感じるかもしれませんが、それについてできることは何もないと思います。

于 2012-10-11T06:40:54.687 に答える
0

最初にインテント フィルタを作成し、充電器イベントをリッスンします

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

そしてリスナーで

// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                     status == BatteryManager.BATTERY_STATUS_FULL;

if(isCharging) {
//disable keyguard
}

そしてあなたの onPause() で

キーガードを有効にする

于 2012-10-11T00:56:42.833 に答える