【问题标题】:Custom Lock Screen Delay When Wake唤醒时自定义锁屏延迟
【发布时间】:2012-11-15 17:40:36
【问题描述】:

我正在尝试制作自定义锁屏应用程序,但我不确定我是否以正确的方式进行。我有一个广播接收器,它会在屏幕打开并开始我的锁定屏幕活动时进行监听。此接收器在服务中注册,该服务也会禁用默认锁定屏幕。

问题是,在屏幕打开和锁屏活动出现之间有一点延迟。我该怎么做才能让它立即出现?

我的服务代码:

@Override
public void onCreate() {
    super.onCreate();
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver powerReceiver = new PowerReceiver();
    registerReceiver(powerReceiver, filter);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {  

    KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Service.KEYGUARD_SERVICE);
    KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
    lock.disableKeyguard();

    return Service.START_STICKY;
}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

和接收者:

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
        Intent showScreen = new Intent(context, LockScreen.class);
        showScreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(showScreen);


    }   

}

【问题讨论】:

    标签: android locking screen lockscreen


    【解决方案1】:

    将您的应用变成主屏幕替换应用,当用户成功解锁自定义锁定屏幕时,您可以将他们带到默认的主应用。

    您可以在此questionthese 问题中找到更多信息。

    【讨论】:

    • 谢谢,但我如何在解锁后将它们重定向到默认主屏幕?如果我使用隐式意图,那么如果他们将我的锁定屏幕设置为默认主屏幕,他们会回到锁定屏幕吗?我试过 intent.setClassName("com.android.launcher", "com.android.launcher2.Launcher");这只是给了我一个错误
    • 已经试过了,除非我选择默认值,否则它会给我“使用完整的操作”提示。用户是否必须选择他们原来的主屏幕作为默认应用程序?那么我如何首先显示锁定屏幕?
    • 您的锁定屏幕需要是默认的家庭应用程序。我不是 100% 确定其他人在自定义锁定屏幕解锁后如何让启动器显示
    • 想通了!必须使用 setComponentEnabledSetting() 禁用清单意图过滤器,然后在活动弹出时将其重新打开。感谢您的帮助!
    • 嘿CoffeeCrisp,你能解释一下你是怎么做到的吗?我也很想知道。我还收到屏幕开启和活动开始之间的延迟。
    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2015-09-14
    相关资源
    最近更新 更多