3 回答

TA貢獻1863條經(jīng)驗 獲得超2個贊
這是做什么的:
假設(shè)您想要在手機解鎖時檢測解鎖事件并在您的活動中執(zhí)行某些操作。擁有ACTION_SCREEN_ON,ACTION_SCREEN_OFF和ACTION_USER_PRESENT的廣播接收器。
觸發(fā)ACTION_SCREEN_ON時將調(diào)用onResume活動。創(chuàng)建一個處理程序并等待ACTION_USER_PRESENT。觸發(fā)后,實施您想要的活動。

TA貢獻1784條經(jīng)驗 獲得超7個贊
經(jīng)過一段時間的分散后,我發(fā)現(xiàn)最好的方法是在“android.intent.action.USER_PRESENT”動作上注冊BroadcastReceiver。
“廣播操作:在設(shè)備喚醒后用戶出現(xiàn)時發(fā)送(例如,當(dāng)鍵盤鎖定消失時)。”
為了區(qū)分用戶在未鎖定到實際解鎖時打開屏幕的情況,請使用KeyguardManager檢查安全設(shè)置。
代碼示例:
將此添加到您的活動中:
registerReceiver(new PhoneUnlockedReceiver(), new IntentFilter("android.intent.action.USER_PRESENT"));
然后使用這個類:
public class PhoneUnlockedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
KeyguardManager keyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
if (keyguardManager.isKeyguardSecure()) {
//phone was unlocked, do stuff here
}
}
}

TA貢獻1864條經(jīng)驗 獲得超6個贊
public class PhoneUnlockedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)){
Log.d(TAG, "Phone unlocked");
}else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
Log.d(TAG, "Phone locked");
}
}
}
通過此聲明注冊接收者
receiver = new PhoneUnlockedReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_USER_PRESENT);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(receiver, filter);
- 3 回答
- 0 關(guān)注
- 1195 瀏覽
添加回答
舉報