打开浏览器后返回应用程序按钮

时间:2018-11-08 22:17:25

标签: java android webview

我有一个Webview可以在其上加载特定网站,用户必须执行只能由浏览器完成的验证,用户单击链接并打开android浏览器并执行此验证,可以创建浏览器顶部的应用程序后退按钮,因为验证后用户无法返回到该应用程序,在iphone上有导航控制器,并且当用户单击打开浏览器的链接时会创建一个Android上可以在手机顶部返回按钮吗?

1 个答案:

答案 0 :(得分:0)

不直接。

我看到有两种方法可以解决此限制。

  1. 敬酒,告诉用户返回您的应用程序。
  2. 使用可触摸的叠加层,并在用户执行将其定向到浏览器的操作时将其添加到显示中。点击该叠加层后,使您的应用程序“重新启动”。

您可以像这样制作一个简单的可点击叠加层:

ImageView button = new ImageView(context); //this can be any View you want, even your own custom subclass
button.setImageResource(R.drawable.back); 
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //handle relaunching your app here
    }
})

WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.height = 50; //height and width are in pixels
params.width = 50;
params.type = Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1 ? 
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY : 
                WindowManager.LayoutParams.TYPE_PHONE;
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
params.gravity = Gravity.TOP | Gravity.START;

WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
manager.addView(button, params); //add the button to the screen

manager.removeView(button); //remove the button from the screen

为此,您需要SYSTEM_ALERT_WINDOW_PERMISSION:How to handle SYSTEM_ALERT_WINDOW permission not being auto-granted on some pre-Marshmallow devices

要处理重新启动应用程序的问题,请将launchMode="singleInstance"添加到AndroidManifest中的“活动”标签中,然后在startActivity()方法内部对其使用onClick()