【发布时间】:2017-04-26 18:06:35
【问题描述】:
如果有人可以尝试这个简单的示例并运行应用程序,我将不胜感激。当 url 加载时,向下滚动一点并尝试单击一个橙色按钮,上面写着“带我去那里”,在两个不同的设备中有两种不同的行为。在 Nexus 5X 中,它在同一个 Webview 中加载目标,但在 Galaxy Nexus API 22 (Android 5.1.1) 中,它在默认的 android 浏览器中打开目标。我希望我能够传达我的问题。我尝试搜索解决方案,但找不到。请帮忙!!!!!!!!!!!!!!!!!!!
package in.ac.cus.webview;
import android.annotation.TargetApi;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
private WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Webview initial setup procedure
myWebView = (WebView) findViewById(R.id.webview);
WebSettings websettings = myWebView.getSettings();
websettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://library.cus.ac.in");
myWebView.setWebViewClient(new WebViewClient());
}
private class WebViewClient extends android.webkit.WebViewClient {
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
}
}
【问题讨论】:
-
当然可以。你认为
startActivity(intent);会做什么? -
我实际上是 android 先生/妈妈的新手,所以我无法找出问题所在。但是为什么两个不同的设备会有两种不同的行为呢?一个在同一个 webview 中打开,另一个在默认浏览器中打开。我希望所有链接在所有 android 设备上的同一个 webview 中打开。请帮帮我先生/妈妈
-
您可能还想查看
@TargetApi(Build.VERSION_CODES.N)的含义。它是负责不同操作系统版本上不同行为的部分 -
先生/妈妈,即使我删除了 @TargetApi(Build.VERSION_CODES.N) 行,它仍然给我相同的结果。先生/妈妈,我很抱歉给您带来麻烦,但我真的很痛苦。