隐藏系统弹出窗口,如最近的任务,通知栏,如android 4.0中的surelock应用程序完成

时间:2013-03-19 04:28:22

标签: android dialog system statusbar

我正在为Android 4.0.3运行平板电脑开发独立应用程序(自助服务终端模式),我的问题是用户可以使用系统状态栏的通知区域进入设置并强制停止我的应用程序并使用平板电脑。

我需要提示一下surelock应用程序如何处理这种情况,我在unrooted设备上下载了他们的应用程序,在启动应用程序并设置为默认主屏幕后,当我按下通知或最近的应用程序按钮时,窗口弹出并立即隐藏所以用户无法与它进行交互,我需要在我的应用程序中使用相同的功能。

我尝试过使用服务进行系统覆盖,它隐藏了它背后的一切(全屏),但问题是我只允许我的活动并隐藏其他活动(比如surelock应用程序)。

 WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN,  
        WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
        WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
        PixelFormat.OPAQUE);
params.gravity = Gravity.RIGHT | Gravity.TOP;
params.setTitle("Load Average");
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(view, params);

1 个答案:

答案 0 :(得分:0)

你不能隐藏它,但你可以简单地禁用它,除了家。试试this link.。使用SYSTEM_UI_FLAG_LOW_PROFILE可以调暗系统栏,使用onWindowFocusChanged()可以获得焦点并将其折叠。如果您使用独立应用程序只需将您的应用程序作为默认主页,请选中此框。使用此用户将无法退出应用程序。

捕获点击事件的代码

int count;
public boolean dispatchTouchEvent(MotionEvent event) {
    // Check the event and do magic here, such as...
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        count = count + 1;

        if (count == 1) {
            new CountDownTimer(5000, 1000) {

                public void onTick(long millisUntilFinished) {

                }

                public void onFinish() {
                    count = 0;
                }
            }.start();
        }

        if (count == 15) {

            exitDialog();
        }


    }

    // Be careful not to override the return unless necessary
    return super.dispatchTouchEvent(event);
}

private void exitDialog() {


    new AlertDialog.Builder(ctw)
            .setView(textEntryView)
            .setIcon(android.R.drawable.ic_dialog_alert)
            .setTitle("Exit")
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // if the password is correct we can exit!
                    if (((EditText) textEntryView
                            .findViewById(R.id.exitpassword)).getText()
                            .toString()
                            .compareTo(getString(R.string.exitpassword)) == 0) {


                        // clear everything and call finish.

                    }
                }
            })
            .setNegativeButton("CANCEL",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {


                        }
                    }).show();

}