2

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

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

我已经尝试使用服务覆盖系统,它隐藏了它背后的所有内容(全屏),但问题是我如何只允许我的活动并隐藏其他活动(就像 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);
4

1 回答 1

0

你不能隐藏它,但你可以简单地禁用它,除了家。试试这个链接。. 使用 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();

}
于 2013-03-27T06:12:23.230 回答