有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在安卓中锁定设备但防止屏幕关闭?

我正在使用DevicePolicyManager在需要时锁定设备。我想要的是打开锁定屏幕,但是使用DevicePolicyManager并调用它的方法lockNow()将锁定设备并关闭屏幕。如何防止关闭屏幕

更新:我尝试了以下方法:

public class LockMeNowActivity extends Activity {
protected PowerManager.WakeLock mWakeLock;
private DevicePolicyManager mgr = null;
private ComponentName cn = null;

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

    setContentView(com.commonsware.安卓.lockme.R.layout.main);
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
    cn = new ComponentName(this, AdminReceiver.class);
    mgr = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
}

public void lockMeNow(View v) {
    if (mgr.isAdminActive(cn)) {

        mgr.lockNow();
    } else {
        Intent intent = new Intent(
                DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                "For experimentation purposes only");
        startActivity(intent);
    }
}

public void pullWakeLock() {
    mWakeLock.acquire();
}

public void onPause() {
    super.onPause();
    pullWakeLock();
}

public void onResume() {
    super.onResume();
    releaseWakeLock();
}

public void releaseWakeLock() {
    mWakeLock.release();
}

}


共 (2) 个答案

  1. # 1 楼答案

    我终于找到了解决这个问题的办法。由于我想在onStop()发生时锁定设备,我执行了以下操作:

        public void onStop() {
        mgr.lockNow();
        super.onStop();
        WakeLock screenLock = ((PowerManager) getSystemService(POWER_SERVICE))
                .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
                        | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
        screenLock.acquire();
    }
    

    而且效果很好。锁定屏幕后打开屏幕

  2. # 2 楼答案

    与lockNow()一起添加PowerManager。唤醒锁定

    进口

    import android.os.PowerManager;
    

    全局变量

    protected PowerManager.WakeLock mWakeLock;
    

    公共方法

        public void pullWakeLock() {
            final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
            this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
            this.mWakeLock.acquire();
        }
    
        public void releaseWakeLock() {
            this.mWakeLock.release();
        }
    

    在清单文件中使用以下权限:

    <uses-permission android:name="android.permission.WAKE_LOCK" />