我正在尝试开发一款能够取代股票lock screen
的Android应用,并获得典型lock screen
的基本功能。我打算从API level 15
及更高版本支持该应用。但我面临着lock screen
行为的一些问题。我暂时无法停用home
的{{1}}和recent button
。我在堆栈,github和其他来源中发现了很多例子,但那些不太有用。
我试过以下方式:
soft navigation bar
在LockActivity中添加了以下标志
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
但没有得到任何有效的解决方案。我发现ZUI Locker是一个非常好的应用程序,做我真正想要的。他们如何访问权限 像默认锁定屏幕一样工作?
有什么建议吗? 提前谢谢!
答案 0 :(得分:0)
我也开发了一个锁屏应用程序,我也想帮助你。
您可以查看答案here,了解Views和TYPE_SYSTEM_ERROR背后的概念。
但我稍微调整了一下代码,这是我的版本:
WindowManager mWindowManager;
RelativeLayout mLscreenlayout;
WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH|
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN|
View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|
View.SYSTEM_UI_FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
mWindowManager = ((WindowManager)getApplicationContext().getSystemService(WINDOW_SERVICE));
mLscreenlayout = new RelativeLayout(getApplicationContext());
getWindow().setAttributes(localLayoutParams);
View.inflate(this, R.layout.activity_lockscreen, this.mLscreenlayout);
this.mWindowManager.addView(mLscreenlayout, localLayoutParams);
public void onDestroy()
{
mWindowManager.removeView(this.mLscreenlayout);
mLscreenlayout.removeAllViews();
super.onDestroy();
//myThread.interrupt();
Log.i("Daze","Lockscreen Activity Destroyed");
}
另外,GitHub here上的库可以锁定主页按钮。希望这会有所帮助:)