如何在 Android 的 WebView 的外部浏览器和应用内打开链接
How to open links both in an external browser and in-app within a WebView for Android
我正在尝试创建两个链接以在我的应用程序的 WebView 内部打开,以及其他在任何默认浏览器中外部打开的链接。我看过之前的问题和答案,但 none 似乎有效,我认为解决方案可能已过时?
如能就如何最好地实现这一目标提出任何建议,我们将不胜感激。在应用程序内打开链接工作正常,它只是获取链接以在适用的外部浏览器中打开。也许某种 class 或 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
}
});
我正在尝试创建两个链接以在我的应用程序的 WebView 内部打开,以及其他在任何默认浏览器中外部打开的链接。我看过之前的问题和答案,但 none 似乎有效,我认为解决方案可能已过时?
如能就如何最好地实现这一目标提出任何建议,我们将不胜感激。在应用程序内打开链接工作正常,它只是获取链接以在适用的外部浏览器中打开。也许某种 class 或 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
}
});