Web 应用程序中的外部链接未在手机浏览器中打开

问题描述

首先,我有一个用 Flask 制作的网络应用程序。它只能在本地 IP 中工作。然后我想制作一个带有 webview 的移动应用程序,以便从 android 应用程序访问网络应用程序。我有 2 个不同的活动在我的应用程序中。第一个活动是从用户那里获取本地 IP 以访问 Web 应用程序。我的 MainActivity.java 在下面。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.button);
    button.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openActivity2();
        }
    });
}

public void openActivity2(){
    EditText editText1 = (EditText) findViewById(R.id.edittext1);
    String text = editText1.getText().toString();

    Intent intent = new Intent(this,Activity2.class);
    intent.putExtra(EXTRA_TEXT,text);
    startActivity(intent);
}

在我的活动 2 中,我使用 webview 查看在用户 IP 上运行的 Web 应用程序。我的 Activity2.java 如下。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_2);

    Intent intent = getIntent();
    String text = intent.getStringExtra(MainActivity.EXTRA_TEXT);

    myWebView = (WebView) findViewById(R.id.webView);


    myWebView.loadUrl("http://" + text + ":5000");

    myWebView.setWebViewClient(new WebViewClient());
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

}

我的 Web 应用程序中有一个按钮,它会在新选项卡中打开 Google 身份验证页面。我的问题是如何在我的应用程序上使用户在单击该按钮时重定向到他的认浏览器成为可能。是有没有合适的方法来做到这一点?

解决方法

要打开移动浏览器的任何网址,您可以使用默认的 IntentACTION_VIEW 作为操作,并在意图数据中指定网址。

例如:

public void openWebPage(String url) {
    Uri webpage = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW,webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

有关详细信息,您可以参考此official guide

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...