草庐IT

android - FLAG_DISMISS_KEYGUARD 不再适用于 Android Lollipop?

coder 2023-12-20 原文

正如标题所说,我惊讶地发现 FLAG_DISMISS_KEYGUARD 标志在 API 21 (Lollipop) 上不再起作用。

在 kitkat 中,设置此标志会关闭不安全的键盘锁。

那么这是功能还是错误?解决方法是什么?

通过 PowerManager 类禁用 keyguard 是一个选项,但它不能像 dismissal 样式那样工作。可以吗?

最佳答案

首先:这是一个错误。

其次,是否有解决方法?是的。

因为我被这个问题绊倒了连谷歌都不知道这个问题, 我对如何解决这个问题进行了大量研究。 这很容易。该错误大概是键盘锁注册了两个 次android实习生。

诀窍是开始正手跑前 Activity ,听 在广播屏幕上,解除键盘保护并开始您真正的 Intent Activity 。

代码:

public class KeyGuardDismissActivity extends Activity {

    private ScreenOnReceiver receiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LOG.d("Start keyguard dismisser!");
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            startActivity(new SomeOtherActivityIntent(getApplicationContext()));
            finish();
            return;
        }
        this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        receiver = new ScreenOnReceiver();
        registerReceiver(receiver, receiver.getFilter());
    }

    private void dismissingKeyguard() {
        LOG.d("Dismissing keyguard!");
        SomeOtherActivityIntent yourRealActivity = new SomeOtherActivityIntent(getApplicationContext(), this);
        startActivity(yourRealActivity );
        if (receiver != null) {
            unregisterReceiver(receiver);
        }
        finish();
    }

    private class ScreenOnReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            LOG.d("Screen on, yay!");
            dismissingKeyguard();
        }

        public IntentFilter getFilter() {
            IntentFilter filter = new IntentFilter();
            filter.addAction(Intent.ACTION_SCREEN_ON);
            return filter;
        }
    }
}

在您的实际 Activity 中,您也必须添加关闭标志!

问候。

关于android - FLAG_DISMISS_KEYGUARD 不再适用于 Android Lollipop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27948419/

有关android - FLAG_DISMISS_KEYGUARD 不再适用于 Android Lollipop?的更多相关文章

  1. ruby - inverse_of 是否适用于 has_many? - 2

    当我使用has_one时,它​​工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby - 如何使用适用于 ruby​​ 的 aws sdk 创建 route53 记录集? - 2

    EC2会在实例停止然后重新启动时为其提供新的IP地址,因此我需要能够自动管理route53记录集,以便我可以一致地访问内容。遗憾的是,sdk的route53部分的文档远不如ec2的文档那么健壮(可以理解),所以我有点卡住了。到目前为止,从我所看到的情况来看,似乎change_resource_record_sets(link)是可行的方法,但我对:chages需要什么感到困惑>因为它提到了一个Change对象,但没有提供指向所述对象描述的链接。这是我的代码目前的样子:r53.client.change_resource_record_sets(:hosted_zone_id=>'MY_

  4. 适用于Web开发的Python还是Ruby? - 2

    Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。11年前关闭。我是一位精通HTML

  5. ruby - 从 Ruby 连接到适用于 Windows Phone 8 的 Microsoft 推送通知服务 - 2

    我们正在开发一个需要推送通知的WP8应用程序。为了测试它,我们使用CURL命令行运行推送通知POST请求,确保它实际连接,使用客户端SSL证书进行身份验证并发送正确的数据。我们确实知道,当我们收到对设备的推送时,这项工作是有效的。这是我们一直用于测试目的的CURL命令:curl--certclient_cert.pem-v-H"Content-Type:text/xml"-H"X-WindowsPhone-Target:Toast"-H"X-NotificationClass:2"-XPOST-d"MytitleMysubtitle"https://db3.notify.live.ne

  6. ruby-on-rails - rspec Mongoid 范围适用于开发而不是测试 - 2

    我有一个适用于Rails中的Mongoid对象的作用域,它在开发时效果很好,但在运行测试时效果不佳。它实际上在测试中根本不起作用。这是一个嵌入式文档。父级:classPersonincludeMongoid::Documentdefself.with_appointmentswhere(:appointments.not=>{'$size'=>0})endembeds_many:appointments,store_as:'Appointments',class_name:'Appointment'end嵌入的child:classAppointmentincludeMongoid::

  7. ruby-on-rails - 我应该使用哪个适用于 Ruby 的 CouchDB 适配器? - 2

    一些我找到的选项是ActiveCouchCouchRESTCouchPotatoRelaxDBcouch_foo我更喜欢GitHub上的项目,因为这让我更容易fork和推送修复。所有这些都符合该要求。我习惯了Rails,所以我喜欢像ActiveRecord模型一样工作的东西。另一方面,我也不希望我和Couch之间太多--毕竟我使用它作为我的数据库是有原因的。最后,它们似乎都得到了相当积极的维护(couch_foo可能是个异常(exception))。所以我想这归结为(不可否认和不幸的)主观:有没有人对他们有过好的或坏的经历? 最佳答案

  8. ruby - 如何获取适用于 ruby​​ 1.9.1 的 to_yaml 方法的格式化选项? - 2

    根据YAML文档,可以传递hashofoptions到.to_yaml方法。目前,当我按照文档中的建议传递选项时,它不起作用,哈希被忽略。irb(main):001:0>require'yaml'=>trueirb(main):002:0>user={"1"=>{"name"=>"john","age"=>44}}user.to_yaml=>"---\n\"1\":\nname:john\nage:44\n"现在,传递一些选项:irb(main):014:0>user.to_yaml(:Indent=>4,:UseHeader=>true,:UseVersion=>true)=>"--

  9. ruby - 为什么这段代码适用于 ruby​​ 1.8 而不是 ruby​​ 1.9? - 2

    这段代码:deffunc*;end[func"hello"]在Ruby1.8.7中解析没有错误,但返回语法错误:syntaxerror,unexpected']',expecting'}'在Ruby中>=1.9。我浏览了WhatisthedifferencebetweenRuby1.8andRuby1.9,但找不到对此的引用。有谁知道是什么变化导致了这种情况? 最佳答案 这是为了避免歧义。请考虑以下事项:deffoo(a,b=1)#footakesanoptionalsecondargumentend[foo1,2]这可以解释为[(

  10. ruby - 您如何指定适用于英语以外的欧洲语言的正则表达式字符范围? - 2

    我正在使用Ruby的正则表达式引擎。我需要编写一个执行此操作的正则表达式WIKI_WORD=/\b([a-z][\w_]+\.)?[A-Z][a-z]+[A-Z]\w*\b/但也可以使用除英语以外的其他欧洲语言。我认为字符范围[a-z]不会涵盖德语等的小写字母。 最佳答案 WIKI_WORD=/\b(\p{Ll}\w+\.)?\p{Lu}\p{Ll}+\p{Lu}\w*\b/u应该在Ruby1.9中工作。\p{Lu}和\p{Ll}是大写和小写Unicode字母的简写。(\w已经包含下划线)另见thisanswer-您可能需要在UTF

随机推荐