web-dev-qa-db-ja.com

プログラムで電話をロック/ロック解除する方法:Android

私のアプリケーションでは、電話をロックおよびロック解除する必要があります。私はそれを検索しました、私は多くの答えを見つけました、私はそれらを試しました、しかし誰も働いていません。

onCreate()で電話のロックを解除し、アクティビティが終了している間にもう一度電話をロックする必要があります。

あなたたちは同じことをする方法を知っていますか?

友よありがとう。

編集:

私が試したいくつかのリンクは次のとおりです。

画面がロックされているときにアクティビティを表示する方法は?

Android画面のロック/プログラムによるロック解除

https://groups.google.com/forum/#!topic/Android-developers/BOLjJTMO4zE

私のアプリケーションでは、AlarmManagerを使用してタスクをスケジュールし、電話ロックを有効にしています。私の活動は予定された時間に開始されていますが、電話のロックが解除されていません。スマートフォンのロックを解除すると、手動で実行中のアクティビティが表示されます

8
Sanjay Joshi

BroadcastReceiverwakelockを設定し、activityに設定します

これを行う:

Window window = this.getWindow();
window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);

以下をインポート

import Android.view.Window;
import Android.view.WindowManager.LayoutParams;

それは私の問題を解決しました、それを評価してください:-)))

11
sharath yadhav

API 27の時点で、FLAG_SHOW_WHEN_LOCKEDおよびFLAG_TURN_SCREEN_ONは非推奨になりました。代わりに、これをManifestで使用してください

<activity
    Android:name=".MyActivity"
    Android:turnScreenOn="true"
    Android:showWhenLocked="true"/>

または、一般的な使用法として、アクティビティで:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
        setTurnScreenOn(true);
        setShowWhenLocked(true);
    } else {
        Window window = getWindow();
        window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
    }
}
3
hiddeneyes02