Java Code Examples for android.app.admin.DevicePolicyManager#lockNow()

The following examples show how to use android.app.admin.DevicePolicyManager#lockNow() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
/**
 * Locks the device (and turns screen off).
 *
 * @return {@code true} if successful, {@code false} otherwise.
 * @see DevicePolicyManager#lockNow()
 */
public boolean lock() {
    DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    try {
        // TODO: Respect secure lock timeout settings.
        mUnlockingTime = 0;
        dpm.lockNow();
        return true;
    } catch (SecurityException e) {
        String errorMessage = "Failed to lock the screen due to a security exception.";
        ToastUtils.showLong(this, errorMessage);
        Log.e(TAG, errorMessage);
        // Clear the FLAG_KEEP_SCREEN_ON flag to prevent the situation when
        // AcDisplay stays forever on. Normally this should never happen.
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        return false; // Screw you owner!
    }
}
 
Example 2
Source Project: android-screen-off   File: ScreenOffActivity.java    License: MIT License 6 votes vote down vote up
/**
 * Turns the screen off and locks the device, provided that proper rights
 * are given.
 * 
 * @param context
 *            - The application context
 */
static void turnScreenOff(final Context context) {
	DevicePolicyManager policyManager = (DevicePolicyManager) context
			.getSystemService(Context.DEVICE_POLICY_SERVICE);
	ComponentName adminReceiver = new ComponentName(context,
			ScreenOffAdminReceiver.class);
	boolean admin = policyManager.isAdminActive(adminReceiver);
	if (admin) {
		Log.i(LOG_TAG, "Going to sleep now.");
		policyManager.lockNow();
	} else {
		Log.i(LOG_TAG, "Not an admin");
		Toast.makeText(context, R.string.device_admin_not_enabled,
				Toast.LENGTH_LONG).show();
	}
}
 
Example 3
Source Project: SecondScreen   File: U.java    License: Apache License 2.0 6 votes vote down vote up
public static void lockDevice(Context context) {
    if(isInNonRootMode(context)) {
        ComponentName component = new ComponentName(context, LockDeviceReceiver.class);
        context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);

        DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        if(mDevicePolicyManager.isAdminActive(component))
            mDevicePolicyManager.lockNow();
        else {
            Intent intent = new Intent(context, LockDeviceActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);

            if(context instanceof Activity)
                ((Activity) context).overridePendingTransition(0, 0);
        }
    } else
        runCommand(context, "input keyevent 26");
}
 
Example 4
/**
 * 优先 ROOT 模式锁屏,失败则尝试 免ROOT 模式锁屏
 *
 * @param context Context
 */
public static void doLockScreen(Context context) {
    //先走ROOT,有权限的话就可以不影响SmartLock之类的了
    try {
        Process process = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(process.getOutputStream());
        outputStream.writeBytes("input keyevent KEYCODE_POWER" + "\n");
        outputStream.writeBytes("exit\n");
        outputStream.flush();
        process.waitFor();
        ProcessUtils.destroyProcess(outputStream, process);
    } catch (Exception e) {
        e.printStackTrace();
    }

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    if (pm == null || pm.isScreenOn()) {
        DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        ComponentName componentName = new ComponentName(context, DeviceAdminReceiver.class);
        if (devicePolicyManager != null) {
            if (devicePolicyManager.isAdminActive(componentName)) {
                devicePolicyManager.lockNow();
            } else {
                openDevicePolicyManager(context);
            }
        } else {
            showToast(context, R.string.devicePolicyManagerNotFound);
        }
    }
}
 
Example 5
/**
 * スクリーンロックを行う
 * @return スクリーンロックできればtrue
 */
private static boolean checkScreenLock(@NonNull final Activity activity, final boolean finish) {
	final ComponentName cn = new ComponentName(activity, DeviceAdminReceiverLock.class);
	final DevicePolicyManager dpm = ContextUtils.requireSystemService(activity, DevicePolicyManager.class);
	if (dpm.isAdminActive(cn)){
		// デバイス管理者が有効ならスクリーンをロック
		dpm.lockNow();
		if (finish) {
			activity.finish();
		}
		return true;
	}
	return false;
}
 
Example 6
public static void lockScreen(){

        DevicePolicyManager policyManager = (DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        ComponentName adminReceiver = new ComponentName(context,
                ScreenOffAdminReceiver.class);
        boolean admin = policyManager.isAdminActive(adminReceiver);
        if (admin) {
            policyManager.lockNow();
        }
    }
 
Example 7
/**
 * Turns screen off and sends a test notification.
 *
 * @param cheat {@code true} if it simply starts {@link AcDisplayActivity},
 *              {@code false} if it turns device off and then uses notification
 *              to wake it up.
 */
private void startAcDisplayTest(boolean cheat) {
    if (cheat) {
        startActivity(new Intent(this, AcDisplayActivity.class));
        NotificationHelper.sendNotification(this, App.ID_NOTIFY_TEST);
        return;
    }

    int delay = getResources().getInteger(R.integer.config_test_notification_delay);

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Test notification.");
    wakeLock.acquire(delay);

    try {
        // Go sleep
        DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        dpm.lockNow();

        new Handler().postDelayed(new Runnable() {

            private final Context context = getApplicationContext();

            @Override
            public void run() {
                NotificationHelper.sendNotification(context, App.ID_NOTIFY_TEST);
            }
        }, delay);
    } catch (SecurityException e) {
        Log.wtf(TAG, "Failed to turn screen off!");
        wakeLock.release();
    }
}
 
Example 8
/**
  * lock
  */
 private void lock() {
 	
 	Util.logDebug("lock()");

 	DevicePolicyManager mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
 	ComponentName mDeviceAdmin = new ComponentName(this, MdmDeviceAdminReceiver.class);        
     if (mDPM.isAdminActive(mDeviceAdmin)) {
mDPM.lockNow();
     }
 	
 }
 
Example 9
public void screenLock()
{
    DevicePolicyManager devicePolicyManager = (DevicePolicyManager) MainActivity.mainActivity.getSystemService(Context.DEVICE_POLICY_SERVICE);
    devicePolicyManager.lockNow();
}
 
Example 10
/**
 * 用辅助功能锁屏
 *
 * @param activity            1
 * @param componentName       2
 * @param requestCode         3
 * @param devicePolicyManager 4
 * @param needConfig          是否需要 配置管理员
 */

public static void lockScreen(@NonNull Activity activity, ComponentName componentName, int requestCode, DevicePolicyManager devicePolicyManager, boolean needConfig) {
    new DebugLog("lockScreen", DebugLog.LogLevel.V);
    //设备管理器是否启用
    boolean active = devicePolicyManager.isAdminActive(componentName);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        //自动移除不必要的管理员,避免在卸载时造成困扰
        if (active) devicePolicyManager.removeActiveAdmin(componentName);
        //请求打开辅助服务设置
        if (!isAccessibilitySettingsOn(activity.getApplicationContext())) {
            new TextToast(activity.getApplicationContext(), activity.getString(R.string.service_disabled));
            try {
                activity.startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
            } catch (Throwable t) {
                t.printStackTrace();
                UIUtils.visibleHint(activity, R.string.accessibility_settings_not_found);
            }
        } else
            LocalBroadcastManager.getInstance(activity).sendBroadcast(new Intent(UnRootAccessibility.LOCK_SCREEN_ACTION));
        activity.finish();
    } else {
        if (!active) {
            //请求启用
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, activity.getString(R.string.service_explanation));
            try {
                activity.startActivityForResult(intent, requestCode);
            } catch (ActivityNotFoundException e) {
                UIUtils.visibleHint(activity, R.string.hint_add_dev_admin_activity_not_found);
            }
        } else {
            devicePolicyManager.lockNow();
            if (needConfig)
                //如果需要二次确认,禁用设备管理器。(这里的策略和root模式的锁屏无需确认不同)
                if (!ConfigManager.get(ConfigManager.NO_NEED_TO_CONFIRM)) {
                    devicePolicyManager.removeActiveAdmin(componentName);
                }
            activity.finish();
        }
    }
}