标签: keyguard

Android的关键是什么?

我用Google搜索,无法找到定义.像往常一样,Android文档非常"有启发性".

android keyguard

64
推荐指数
2
解决办法
13万
查看次数

Android - 唤醒和解锁设备

应用程序描述: 该应用程序旨在作为特定客户端的安全程序(不公开部署).当应用程序在一段时间内未检测到移动时,如果应用程序处于后台或设备处于睡眠状态,应用程序应发出警报并将其置于前台.

问题: 如果设备处于睡眠状态并处于锁定状态,我们需要唤醒并解锁设备.使用SO和其他地方的各种技术,我们已经能够(部分地)唤醒和解锁设备,但是当设备物理插入计算机时,这只能正常运行.如果设备本身没有插上电源,我们测试了唤醒 - 解锁,没有任何反应; 设备似乎仍然处于睡眠状态,应用程序似乎什么都不做(没有警报).

我使用过这篇文章关于使用PowerManager和KeyguardManager,这篇文章使用了窗口标志.

这是目前用于唤醒设备的代码:

public void wakeDevice() {
    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
    wakeLock.acquire();

    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
    KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG");
    keyguardLock.disableKeyguard();
    runOnUiThread(new Runnable(){
        public void run(){
            getWindow().addFlags(
                      WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);                
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

从我看到/使用过的其他一些SO问题的评论和帖子中,似乎PowerManager/KeyguardManager代码应该已经完成​​了这个技巧.同样,正如我之前所说的,它在技术上工作,而设备通过USB插入到开发机器,但在设备分离时绝对没有任何作用.

另请注意,这是我们的第一个Android应用程序,所以我们完全清楚我们可能会完全关注我们正在尝试做的事情.欢迎任何建议.

所以简而言之,鉴于上面的代码,为什么设备根据它是否插入而表现得如此不同,以及为了唤醒和解锁设备,我们应该改变什么?提前感谢您的帮助!

android android-wake-lock keyguard

45
推荐指数
1
解决办法
3万
查看次数

已禁用Keyguard Lock在单击通知后重新启用

在我的应用程序中,我使用下面的代码禁用了键盘锁(ieRemove Lockscreen),它可以正常工作,直到我点击通知栏中的任何通知.如果我点击通知,则会自动重新启用锁定屏幕.任何帮助表示赞赏.

private void remove_lockscreen() {
    final CheckBoxPreference lock = (CheckBoxPreference) findPreference("remove_lockscreen");
    KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
    KeyguardLock kl = km.newKeyguardLock("keyguard_lock");
    if (lock.isChecked()) {
        prefEdit("remove_lockscreen", 1);
        Toast.makeText(getBaseContext(), "Lockscreen will not be shown", Toast.LENGTH_SHORT).show();
        kl.disableKeyguard();
    }
    else if (!lock.isChecked()) {
        prefEdit("remove_lockscreen", 0);
        Toast.makeText(getBaseContext(), "Lockscreen will be shown", Toast.LENGTH_SHORT).show();
        kl.reenableKeyguard();
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}
Run Code Online (Sandbox Code Playgroud)

notifications android lockscreen keyguard

12
推荐指数
1
解决办法
5405
查看次数

以编程方式解锁屏幕

我有一个分享按钮GCM notification.点击分享按钮,我需要启动分享意图.一切都很完美.我面临的唯一问题是Lollipop锁屏功能.当我从锁定屏幕单击共享按钮时,我的意图对话框出现在锁定屏幕下方,用户必须解锁屏幕才能看到对话框.单击共享按钮时,我想以编程方式解锁屏幕.

我尝试使用Power Manager,但是它的所有wakeClock标志都已弃用并且WindowManager.LayoutParams.Flag_KEEP_SCREEN_ON建议使用.但我不是在这里使用活动.我正在使用broadcastReciever context.因此我不能使用getWindow()方法.

我也尝试过KeyguardManager.但即便disableKeyguard()被解除了.

Intent.ACTION_SCREEN_ON如果我们想在屏幕解锁后执行任何操作,我不能使用,因为这应该使用.

我曾使用以下意图以编程方式关闭通知托盘:

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        mContext.sendBroadcast(it);
Run Code Online (Sandbox Code Playgroud)

是否有类似的意图,可以广播解锁屏幕

使用DevicePolicyManager更新了代码:

public static void handleShareBtnClick(Context context, String message) {
    GcmHelper helper = new GcmHelper();
    helper.shareMessage(context, message);
    if(Utility.isLollypopAndAbove()){
          helper.unlockLockScreen();
    }
    helper.launchShareforForAlert();

}



   public void unlockLockScreen(){
        DevicePolicyManager devicePolicyMngr= (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
        ComponentName compName=new ComponentName(mContext, DeviceAdminReceiver.class);
        if(!devicePolicyMngr.isAdminActive(compName))
            devicePolicyMngr.removeActiveAdmin(compName);
    }
Run Code Online (Sandbox Code Playgroud)

即使在使用DevicePolicyManager之后,它也无法解锁我的屏幕

android unlock android-intent keyguard android-powermanager

10
推荐指数
1
解决办法
2万
查看次数

禁用Android ICS中的主页按钮(4.0)

我正在为一家公司制作专有应用程序,该应用程序永远不会将其发布到Ice Cream Sandwich(Android 4.0)中的Android Market(或我现在认为的Play商店).

我需要禁用Home,这样用户就无法恶意卸载软件或删除应用捕获的数据.这个最新版本是第一个用4.0编写的,以前的版本是用2.2和3.2编写的.

为了禁用2.2中的Home按钮,我将应用程序关联为主页替换,因此该按钮刚刚重新打开应用程序,但我无法再使用此方法,因为这有点阻止我们对应用程序进行更新(我们不知道)我想让用户选择重新选择Home默认值,因为这会导致数据删除.

我在3.2中禁用Home按钮的代码是:

@Override
public void onAttachedToWindow() {
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
     super.onAttachedToWindow();
}
Run Code Online (Sandbox Code Playgroud)

并且,在onCreate下:

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
Run Code Online (Sandbox Code Playgroud)

但是当我运行在我的3.2平板电脑上运行的相同代码时,它在我的4.0平板电脑上不起作用.

我想知道是否有一个新的API或方法可以达到与我目前在3.2实现中相同的效果.

感谢您的帮助或指导.

亚当

android android-3.0-honeycomb keyguard android-4.0-ice-cream-sandwich

9
推荐指数
1
解决办法
2万
查看次数

如何在触发SCREEN_ON接收器时禁用Keyguard并向用户显示活动?

当screen_on激活广播接收器时,如何禁用键盘锁,这样当用户看到它后面开始的活动时?(活动已经开始......)

我一直在尝试从屏幕关闭触发的广播接收器中的以下代码...

KeyguardManager  myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
myLock = myKeyGuard.newKeyguardLock();
myLock.disableKeyguard();
Run Code Online (Sandbox Code Playgroud)

虽然它似乎没有工作.当我打开屏幕时,我仍然需要手动解锁手机上的键盘锁,以显示其背后的活动.

android keyguard

8
推荐指数
2
解决办法
3万
查看次数

如何以编程方式锁定/解锁手机:Android

在我的应用程序中,我需要锁定和解锁手机.我搜索了它,我找到了许多答案,我尝试了它们,但没有人工作.

onCreate()在我完成活动时,我需要再次打开手机并再次锁定手机.

你们知道做同样的方法吗?

谢谢朋友.

编辑:

我尝试过的一些链接是:

如何在屏幕锁定时显示活动?

Android屏幕锁定/解锁以编程方式

https://groups.google.com/forum/#!topic/android-developers/BOLjJTMO4zE

在我的应用程序中,我正在使用AlarmManager然后启用手机锁来安排任务.我的活动是在预定时间开始,但它没有解锁我的手机.当我解锁我的手机时,手动运行活动就出现了

android keyguard

8
推荐指数
2
解决办法
3万
查看次数

android的KeyguardManager中isDeviceLocked和isKeyguardSecure有什么区别?

以下摘自http://developer.android.com/reference/android/app/KeyguardManager.html

public boolean isDeviceLocked()

返回设备当前是否已锁定并需要PIN,模式或密码才能解锁.如果解锁设备当前需要PIN,模式或密码,则返回true.

public boolean isKeyguardSecure()

返回键盘锁是否需要密码才能解锁.如果keyguard是安全的,则返回true.

isDeviceLocked和之间有什么区别isKeyguardSecure?

api android locking lockscreen keyguard

8
推荐指数
1
解决办法
5473
查看次数

KeyguardManager - api 25 及以下的 requestDismissKeyguard() 方法替代 [Android]

我最近试图要求用户从我的应用程序中手动关闭键盘保护。当设备被锁定并且屏幕上有标志时,我的应用会调用一个活动屏幕

FLAG_SHOW_WHEN_LOCKED
FLAG_TURN_SCREEN_ON

当我必须调用另一个没有这些标志的屏幕时,我想请求用户解锁键盘锁,这种行为可以在相机应用程序中看到 - 当我们想分享手机锁定时拍摄的照片时将要求我们解锁设备。

requestDismissKeyguard()方法仅适用于 api26 及以上的低 apis 的任何替代方案?

android keyguard keyguardlock

7
推荐指数
1
解决办法
3411
查看次数

MIUI 权限被拒绝活动 KeyguardLocked

当应用程序在后台并且屏幕被锁定时,我无法启动活动,没有异常或警告,只是没有调用 onCreate()。我一直在努力解决这个问题,我想我终于找到了它的根源。日志中有一行:

D/com.android.server.am.ExtraActivityManagerService: MIUILOG- Permission Denied Activity KeyguardLocked: Intent { flg=0x14010000 cmp=com.trueconf.videochat/com.trueconf.gui.activities.Call (has extras) } pkg : com.trueconf.videochat uid : 10634
Run Code Online (Sandbox Code Playgroud)

这就是我无法开始活动的原因吗?另外,我该如何解决这个问题,我应该禁用键盘锁还是什么?

android keyguard android-activity miui

7
推荐指数
1
解决办法
2210
查看次数