android - 如何在 Android 的 WebView 中的外部浏览器和应用内打开链接
问题描述
我正在尝试创建两个链接以在我的应用程序的 WebView 内部打开以及在任何默认浏览器中外部打开的其他链接。我已经看过以前的问题和答案,但似乎没有一个有效,我认为解决方案可能已经过时了?
任何关于如何最好地实现这一目标的建议将不胜感激。在应用程序中打开链接工作正常,它只是让链接在适用的外部浏览器中打开。也许某种类或 url 参数检查?到目前为止,我还没有设法让任何一个工作。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
myWebView.loadUrl("https://website.com/");
myWebView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if (myWebView.canGoBack()) {
myWebView.goBack();
} else {
super.onBackPressed();
}
}
}
解决方案
你可以这样做
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(wantToOpenExternal){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
String title = "Select a browser";
Intent chooser = Intent.createChooser(intent, title);
startActivity(chooser);
return true;//cancel the current load
}
return false;//continue the current load
}
});
推荐阅读
- spring-boot - 日期在数据库中减少了一天 - Mysql 8.0
- android - 有没有办法将 alpha 属性设置为子视图以及父视图?
- xml - 通过 XSLT 将 .txt 文件转换为 JSON
- javascript - 我对 html 代码中的 for each 循环有疑问
- jenkins - 将 SonarQube 扫描仪构建步骤转换为詹金斯管道
- c# - PRISM navigationService 在 ViewModel 构造函数中为空
- node.js - 在 nodejs 环境的 aws lambda 模块中发出请求时,为两个特定域返回 403
- java - java - 有没有办法获取给定日期字符串的模式或从 LocalDate
- eclipse - gerrit 配置中 rules.pl 中管理组的绕过规则
- c# - 在 C# 中加入两个条件