我想在打开我的应用程序后自动禁用家庭和电源按钮,并在点击应用程序中的退出按钮后启用它们。
我已经通过将我的应用程序作为启动器应用程序实现了这一点,它一直有效,直到Jellybean(测试到4.1.2)。
但同样的应用程序在KitKat和Lollipop版本中无法解决。 我认为使用信息亭技术来禁用Lollipop中的主页按钮。 参考https://sdgsystems.com/blog/implementing-kiosk-mode-android-part-3-android-lollipop, 它需要一个设备所有者应用程序和几个步骤来实现它。
虽然我的应用程序是自动阻止主页按钮功能,但它并没有解决。
我的问题是:
如果信息亭是技术,那么如何使它适合我的要求? (寻找指南)
答案 0 :(得分:1)
首先抱歉迟到的回答。第一件事是程序员真的没有阻止主页按钮。它们仅使用技巧隐藏锁定屏幕后面的主页按钮进程。
你怎么能这样做?简单。只需使用您的锁定屏幕窗口作为窗口管理器屏幕,这就是为什么在按下主页后您的移动屏幕不会最小化。这是大多数成功锁定应用程序中使用的小技巧。
还有一件事是如何重叠手机窗口顶部系统状态栏。
为此您可以使用这样的代码,并可以根据需要进行修改。
manager = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE));
localLayoutParams = new WindowManager.LayoutParams();
localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
localLayoutParams.gravity = Gravity.TOP;
localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
//WindowManager.LayoutParams.FLAG_LAYOUT_ATTACHED_IN_DECOR |
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN |
// this is to enable the notification to recieve touch events
//WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH |
// Draws over status bar
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
//localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
localLayoutParams.height = (int) (50 * getResources().getDisplayMetrics().scaledDensity);
localLayoutParams.format = PixelFormat.TRANSPARENT;
view = new customViewGroup(this);
manager.addView(view, localLayoutParams);
并像这样创建customeVIewGroup类..
public class customViewGroup extends ViewGroup {
public customViewGroup(Context context) {
super(context);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
Log.v("customViewGroup", "**********Intercepted");
return true;
}
}
答案 1 :(得分:0)
这是我建议的流程。创建设备所有者应用并通过NFC凹凸或adb获取设备所有权。将您的包名添加到设备所有者应用程序中的setLockTaskPackage()。
现在,在您想要锁定设备的应用程序中,调用startLockTask()方法,您的设备将被锁定到此特定应用程序,直到您调用stopLockTask()。
您可以找到api信息here。
关于如何创建设备所有者应用和指南,您可以参考Florent Dupont的网站。