我知道这个问题被问了很多次,但我发现所有的解决方案都不起作用。我尝试了下面给出的代码...
protected void onPause() {
super.onPause();
Intent intent = new Intent(this,LockActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT |Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
它所做的是,当android主屏幕启动时,它将当前活动再次带到前面,但当主屏幕启动时,它几乎需要3-4秒才能将活动带到前面。
我已经使用了一些锁屏应用程序,当点击主页按钮时,它们甚至不会启动主屏幕。我想要实现这样的事情。
我也用过onUserLeavesHint方法、onKeyDown方法和onKeyDispatch方法,但它们都不适合我。
请不要回答或评论,因为这是不可能禁用主页按钮在安卓。对于这样的答案或评论,我建议你通过PlayStore上的一些锁屏应用程序。此外,我在github上找到了一个可以正常工作的应用程序以及源代码。它在我的手机上工作,应用程序使用disableKeyguard,但当我在我的应用程序中做同样的事情时,它不起作用(disableKeyguard被弃用,但我使用@supress警告(“弃用”))。
发布于 2016-04-12 14:45:47
来源- https://github.com/shaobin0604/Android-HomeKey-Locker
//Copy this class
public class HomeKeyLocker {
private OverlayDialog mOverlayDialog;
public void lock(Activity activity) {
if (mOverlayDialog == null) {
mOverlayDialog = new OverlayDialog(activity);
mOverlayDialog.show();
}
}
public void unlock() {
if (mOverlayDialog != null) {
mOverlayDialog.dismiss();
mOverlayDialog = null;
}
}
private static class OverlayDialog extends AlertDialog {
public OverlayDialog(Activity activity) {
super(activity, R.style.OverlayDialog);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
params.dimAmount = 0.0F; // transparent
params.width = 0;
params.height = 0;
params.gravity = Gravity.BOTTOM;
getWindow().setAttributes(params);
getWindow().setFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 0xffffff);
setOwnerActivity(activity);
setCancelable(false);
}
public final boolean dispatchTouchEvent(MotionEvent motionevent) {
return true;
}
protected final void onCreate(Bundle bundle) {
super.onCreate(bundle);
FrameLayout framelayout = new FrameLayout(getContext());
framelayout.setBackgroundColor(0);
setContentView(framelayout);
}
}
}
//Paste this in your activity
mHomeKeyLocker = new HomeKeyLocker();
mHomeKeyLocker.lock(this);
发布于 2016-04-12 03:20:34
您可以使用shaobin0604 library来完成此操作。它还会禁用后退按钮。您的活动将如下所示:
public class MainActivity extends Activity {
HomeKeyLocker homeKeyLocker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
homeKeyLocker = new HomeKeyLocker();
homeKeyLocker.lock(this);
}
}
https://stackoverflow.com/questions/36383357
复制相似问题