【问题标题】:How to lock/unlock phone programmatically : Android如何以编程方式锁定/解锁手机:Android
【发布时间】:2013-07-29 12:25:57
【问题描述】:

在我的应用程序中,我需要锁定和解锁手机。我搜索了它,我找到了很多答案,我尝试了它们但没有一个有效。

我需要在onCreate() 上解锁手机并在我完成活动时再次锁定手机。

你们知道有什么方法可以做到吗?

感谢朋友。

编辑:

我尝试过的一些链接是:

How to display Activity when the screen is locked?

Android screen lock/ unlock programmatically

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

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

【问题讨论】:

  • 您尝试了哪些答案,所以我们知道不建议使用它们?
  • “没有人在工作”不是对您症状的有用描述。请完整准确地说明您尝试了什么以及遇到了什么问题。
  • @BladeOrz:我添加了一些访问过的页面链接
  • @CommonWare:我添加了一些关于我的问题的描述。谢谢

标签: android keyguard


【解决方案1】:

BroadcastReceiver 上设置wakelockactivity

这样做:

Window window = this.getWindow();
window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);

导入关注

import android.view.Window;
import android.view.WindowManager.LayoutParams;

【讨论】:

  • 这似乎工作,我的应用程序被带到了前面....事件虽然没有输入 sim 卡密码。我只是以某种方式认为您将无法访问任何电话或数据功能。如果是这种情况,我会告诉你...
  • 吉普,确认。因此,您将无法访问 sim 卡功能。因此,如果您想绕过输入 pin 并启动您的应用程序,这很有效......只要用户不最小化或关闭应用程序,因为然后您回到登录屏幕。
【解决方案2】:

从 API 27 开始,FLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ON 已弃用。而是在 Manifest

中使用它
<activity
    android:name=".MyActivity"
    android:turnScreenOn="true"
    android:showWhenLocked="true"/>

或者,对于一般用途,在您的活动中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
        setTurnScreenOn(true);
        setShowWhenLocked(true);
    } else {
        Window window = getWindow();
        window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
    }
}

【讨论】:

    【解决方案3】:

    试试这个...

    @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
                        setContentView(R.layout.activity_main);
        }
    
        @Override
            protected void onPause() {
                super.onPause();
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    
    
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2011-02-28
      相关资源
      最近更新 更多