如何以编程方式设置锁定屏幕消息

时间:2017-08-17 10:48:30

标签: android

在设置中我们可以手动设置锁屏,但我想通过编程设置锁屏消息

enter image description here

我尝试过以下方法:

  1. 1.已尝试过DevicePolicyManager.getDeviceOwnerLockScreenInfo,但它重新为空。
  2. 我试图使用ContactsContract.Profile.CONTENT_URI来获取它,在此没有关于此的字段。我提取了此URI中现有字段的值,但没有设置锁屏消息的值。
  3. 我尝试使用LOCK_PATTERN_ENABLED& NEXT_ALARM_FORMATTED,这些也没用。
  4. 我已经尝试了以上所有方法,但是如果有人知道让我更新,则无法设置和获取消息。

1 个答案:

答案 0 :(得分:0)

经过大量的研究,我通过反射得到了正确的解决方案,我们可以实现它。有一个 LockPatternUtils 类,我们可以通过它获取设备信息,下面是代码。

  ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 1);

    //String a = Settings.Secure.getString(getContentResolver(),"lock_screen_owner_info");
    //printLog("a : "+a);

    Class<?> cl = null;
    try {
        cl = Class.forName("com.android.internal.widget.LockPatternUtils");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    try {
        Constructor<?> cons = cl.getConstructor(Context.class);
        Object obj = cons.newInstance(this);
        Class[] paramInt = new Class[1];
        paramInt[0] = Integer.TYPE;
        Method method = cl.getDeclaredMethod("getOwnerInfo", paramInt);
        Log.d("b : " ,""+ method.invoke(obj, 0));
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }