2017-08-17 89 views
1

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

enter image description here

下面我试图接近:

  1. 1 .have尝试了DevicePolicyManager.getDeviceOwnerLockScreenInfo,但它返回null。
  2. 我试图使用ContactsContract.Profile.CONTENT_URI来获取它,在这里没有关于这个的字段。我提取了这个URI中现有字段的值,但没有值,因为我们已经设置了锁定屏幕消息。
  3. 我试过使用LOCK_PATTERN_ENABLED & NEXT_ALARM_FORMATTED,这些也没有用。

我已经试过以上所有接近但无法设置和获得消息,如果有人知识让我更新。

回答

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(); 
    } 
+0

它不工作! – shadygoneinsane

相关问题