web-dev-qa-db-ja.com

Androidでロック解除イベントを取得する方法は?

PHONE_UNLOCKEDBroadcastReceiverのようなもの)のようなものを受け取る方法はありますか?

画面がオンのときにToastを表示するサービスを実行しています。残念ながら、ロックが解除されるまで、いくつかの電話はそれを表示しません。ほとんどの場合、Toastメッセージはすでに消えています。

23
Saman Miran

ブロードキャストレシーバーアクションがありますACTION_USER_PRESENTここにACTION_USER_PRESENTとACTION_SHUTDOWNの実装があります

これをアプリケーションに追加しますManifests

<receiver Android:name=".UserPresentBroadcastReceiver">
  <intent-filter>
    <action Android:name="Android.intent.action.USER_PRESENT" />
    <action Android:name="Android.intent.action.ACTION_SHUTDOWN" />
 </intent-filter>
</receiver>

アクションを受け取る

import Android.content.BroadcastReceiver;
import Android.content.Context;
import Android.content.Intent;

public class UserPresentBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent intent) {

        /*Sent when the user is present after 
         * device wakes up (e.g when the keyguard is gone)
         * */
        if(intent.getAction().equals(Intent.ACTION_USER_PRESENT)){

        }
        /*Device is shutting down. This is broadcast when the device 
         * is being shut down (completely turned off, not sleeping)
         * */
        else if (intent.getAction().equals(Intent.ACTION_SHUTDOWN)) {

        }
    }

}

UPDATE:

Android 8.0(APIレベル26)バックグラウンド実行制限の一部として、APIレベル26以上を対象とするアプリは、マニフェストで暗黙的なブロードキャストのブロードキャストレシーバーを登録できなくなりました。 参照

47