【问题标题】:how to lock the android programatically如何以编程方式锁定android
【发布时间】:2011-05-25 17:48:19
【问题描述】:

我想在我点击锁定按钮时锁定手机。任何人都请帮助使用简单的代码。我尝试使用 API_Demos 中的部分代码,但它显示了一些错误。

【问题讨论】:

  • 什么错误?在这里告诉他们!
  • Error(361): java.lang.SecurityException: No active admin 由 uid 10045 拥有策略#3 WARN/DeviceAdminAdd(128): Unable to retrieve device policy ComponentInfo{com.lock..}

标签: android locking


【解决方案1】:

您可以使用 LockScreen 类以编程方式锁定 Android 屏幕,如下所示:

KeyguardManager mgr = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = mgr.newKeyguardLock(KEYGUARD_SERVICE); 
lock.reenableKeyguard();

看看 LockScreen 类here

【讨论】:

  • 我已经尝试过你提到的代码。但是没有结果也没有错误。日志猫消息如下 12-16 10:20:31.687: DEBUG/AndroidRuntime(332):关闭 VM 12-16 10:20:31.697: DEBUG/dalvikvm(332): 调试器已分离;对象注册表有 1 个条目 12-16 10:20:31.817:INFO/AndroidRuntime(332):注意:附加线程 'Binder Thread #3' 失败 12-16 10:20:37.376: DEBUG/dalvikvm(125): GC_EXPLICIT在 101 毫秒内释放 2660 个对象 / 175544 个字节 12-16 10:20:53.036: DEBUG/SntpClient(59): request time failed: java.net.SocketException: Address family not supported by protocol
  • 我使用了与您相同的代码,并且收到了安全警告,因此我在清单文件中授予了此权限。 。但现在它没有给我任何例外,甚至没有显示锁。你知道是什么问题吗?
  • @sajjoo 我也遇到了同样的问题,你找到解决办法了吗?
【解决方案2】:

代码:

KeyguardManager mgr = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = mgr.newKeyguardLock(KEYGUARD_SERVICE); 
lock.reenableKeyguard();

不会锁定屏幕。它只是启用键盘锁。当您使用

运行时
lock.disableKeyguard();

并按下设备上的锁定按钮,它不会锁定键盘锁。 要以编程方式锁定屏幕,您必须参考 Device Admin 并使用 locknow() 方法锁定设备。

【讨论】:

    【解决方案3】:

    @Bhupinder 请检查以下链接。

    http://musicm122.blogspot.in/2011/10/locking-and-unlocking-android-phone.html

    //Get the window from the context
    
       WindowManager wm = Context.getSystemService(Context.WINDOW_SERVICE);
    
       //Unlock
    
       //http://developer.android.com/reference/android/app/Activity.html#getWindow()
    
       Window window = getWindow();  
    
       window.addFlags(wm.LayoutParams.FLAG_DISMISS_KEYGUARD);  
    
    
    
       //Lock device
    
       DevicePolicyManager mDPM;
    
       mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
    

    【讨论】:

    • 请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(而不是另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2012-12-13
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多