對於需要我的應用程序,即使啓用了鎖定屏幕,我仍然需要在屏幕上顯示一條消息,然後等待3秒鐘,然後再次將手機鎖定爲我不希望它在你的口袋裏打不需要的電話。解鎖設備,顯示文本,然後再次鎖定
第一部分是簡單的:
if (PreferenceManager.getDefaultSharedPreferences(
getBaseContext()).getBoolean("wake", false)) {
KeyguardManager kgm = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean isKeyguardUp = kgm.inKeyguardRestrictedInputMode();
WakeLocker.acquire(ProtoBenService.this);
Intent myIntent = new Intent(ProtoBenService.this,LockActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (isKeyguardUp) {
ProtoBenService.this.startActivity(myIntent);
} else
Toast.makeText(ProtoBenService.this.getBaseContext(), intention, Toast.LENGTH_LONG).show();
WakeLocker.release();
}
有了這個類:
public abstract class WakeLocker {
private static PowerManager.WakeLock wakeLock;
public static void acquire(Context ctx) {
if (wakeLock != null) wakeLock.release();
PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE, "CobeIm");
wakeLock.acquire();
}
public static void release() {
if (wakeLock != null) wakeLock.release(); wakeLock = null;
}
}
,並且活動:
public class LockActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
TextView tv = new TextView(this);
tv.setText("This is working!");
tv.setTextSize(45);
setContentView(tv);
Runnable mRunnable;
Handler mHandler = new Handler();
mRunnable = new Runnable() {
@Override
public void run() {
LockActivity.this.finish();
}
};
mHandler.postDelayed(mRunnable, 3 * 1000);
}
}
所以,這是不錯的,手機可以顯示我的文字!
唯一的問題是當我想再次鎖定手機,它似乎鎖定手機在系統的保護...
- Programmatically turning off the screen and locking the phone
- how to lock the android programatically
我想我的用戶不理解設備管理員並且無法激活它。有沒有任何解決方法來鎖定屏幕沒有設備管理員的東西?
喂獅子座,我想打開屏幕和解鎖時,我的應用程序接收廣播,反正是有其他該設備管理策略? –
@BipinVayalu我認爲你需要使用設備管理功能才能解鎖屏幕。但結賬AlarmManager,可能會做你需要的。 –
感謝您的回覆,我已經完成了使用一個空白的活動,將開始與屏幕和解鎖相關的標誌。 –