锁屏应用程序的android> = 4.0.3

时间:2016-03-21 06:29:31

标签: android lockscreen

我正在尝试开发一款能够取代股票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是一个非常好的应用程序,做我真正想要的。他们如何访问权限 像默认锁定屏幕一样工作?

有什么建议吗? 提前谢谢!

1 个答案:

答案 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上的库可以锁定主页按钮。希望这会有所帮助:)