6

我查看了很多类似的问题,我发现不可能将锁屏作为标准的 android 储物柜。可能的事情是制作一个禁用 LockScreen 并使用不同“锁”而不是标准“锁”的应用程序。我正在考虑使用不同类型的锁制作自定义锁屏。我不知道可能的是:

  1. 是否有任何方法可以将 .xml 布局用于锁屏
  2. 然后我可以像普通应用程序一样编写它吗

我不想引用市场上现有的应用程序。

4

2 回答 2

1

我相信您是对的,因为我也没有找到替换原始锁屏的方法。正如你所说,我们可以禁用原版并伪造另一个。

我有一个概念,你可以发现这个页面也很有帮助:http ://chandan-tech.blogspot.com/2010/10/handling-screen-lock-unlock-in-android.html

你禁用原来的,添加一个监听器到 ACTION_SCREEN_ON,一旦它被触发,显示你的假锁屏,从现在开始你可以像一个普通的应用程序一样编写它,我相信 xml 布局是完全实用的。

要实际实现它,还应该创建一个服务,并且必须在系统启动时运行。在您的活动中,您还应该禁用通知栏和按钮。

于 2012-03-03T19:16:33.540 回答
0

您可以尝试覆盖 KeyguardManager

KeyguardManager.KeyguardLock key;
KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE);
//depreciated
key=km.newKeyguardLock("IN");

您必须将其插入到 service.Go 中,如下所示:

public class LockService extends Service{
BroadcastReceiver receiver;
@override
@SuppressWarnings("deprecation")
public void onCreate(){
KeyguardManager.KeyguardLock key;
KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE);
//depreciated
key=km.newKeyguardLock("IN");
IntentFilter filter=new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_BOOT_COMPLETED);
receiver=new LockscreenReceiver();
registerReceiver(receiver,filter);
super.onCreate();
}

然后在 LockscreenReceiver 上,您必须执行此操作:

public class LockscreenReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context,Intent intent){
String action=intent.getAction();
//if the screen was recently enabled, do this:
//If the screen was just turned on or it just booted up, start your Lock Activity
        if(action.equals(Intent.ACTION_SCREEN_OFF) || action.equals(Intent.ACTION_BOOT_COMPLETED))
        {
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
}
}

之后,您必须在 MainActivity 中注册或调用服务

startService(new Intent(this,LockscreenService.class));

要查看此操作,请访问https://github.com/thomasvidas/Simple-Lockscreen

于 2015-11-03T16:11:51.993 回答