android - android webview上没有互联网连接消息
问题描述
嗨,我有原生 android webview,这在连接到 android studio 的三星 J5 Prime 设备上完美运行,在这个设备上测试了 APK,没有模拟器,问题是关于签名 APK 的问题是调试和发布最终的 apk 签名或任何真实设备中显示的内容正常配置消息“无互联网连接”,这是在 java 代码中在 android 应用程序中配置的正常消息,但此消息仅在手机没有真正的互联网连接的情况下有效,但通常在真正的手机有互联网连接,wifi和电话数据,但我继续收到此消息“不是互联网连接”,并且 webview 应用程序无法加载网站,只能工作,并且在 samunsg j5 Prime 真实设备上没有出现任何消息。
接下来复制并粘贴默认webview的配置代码的主要选项
WebSettings webSettings = mWebView.getSettings();
webSettings.setDomStorageEnabled(true);
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
webSettings.getSaveFormData();
webSettings.setDisplayZoomControls(false);
webSettings.setUseWideViewPort(true);
webSettings.setAppCacheEnabled(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setSavePassword(true);
// webSettings.setSupportMultipleWindows(true); //?a href problem
webSettings.getJavaScriptEnabled();
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
webSettings.setGeolocationEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setAllowContentAccess(true);
webSettings.setLoadsImagesAutomatically(true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
// mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
// webSettings.setJavaScriptCanOpenWindowsAutomatically(false); //(popup)
我在这里复制并粘贴代码的部分,没有互联网连接显示消息
mWebView.setWebViewClient(new WebViewClient()
{
public void onReceivedError(WebView mWebView, int i, String s, String d1)
{
Toasty.error(getApplicationContext(),"No hay conexion a internet!").show();
mWebView.loadUrl("file:///android_asset/net_error.html");
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, final String url) {
super.onPageFinished(view, url);
boolean d = false;
if(d==false){
//nestedScrollView.scrollTo(0,0);
d=true;
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//opening link external browser
/*if(!url.contains("android_asset")){
view.setWebViewClient(null);
} else {
view.setWebViewClient(new WebViewClient());
}*/
if(url.contains("youtube.com") || url.contains("play.google.com") || url.contains("google.com/maps") || url.contains("facebook.com") || url.contains("twitter.com") || url.contains("instagram.com")){
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
else if(url.startsWith("mailto")){
handleMailToLink(url);
return true;
}
else if(url.startsWith("tel:")){
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
return true;
}
else if(url.startsWith("sms:")){
// Handle the sms: link
handleSMSLink(url);
// Return true means, leave the current web view and handle the url itself
return true;
}
else if(url.contains("geo:")) {
Uri gmmIntentUri = Uri.parse(url);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}
return true;
}
view.loadUrl(url);
return true;
}
});
结果 = 正常情况(仅在我的设备中加载 webview) 在此处输入图像描述
错误结果 = 在其他真实设备中没有加载 webview(在这种情况下,只有三星真实设备 android 并且没有其他设备用于截屏并在此处发布显示糟糕情况的图像,我需要进入飞行模式,但 wifi 和数据连接仍在继续问题) 在此处输入图像描述
这是用于制作 android 应用程序的存储库链接 https://github.com/mustafaersoyer/Advanced-Android-WebView
这是只有用户权限的清单文件
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
解决方案
推荐阅读
- c# - 尝试使用 SSL 时出现 ActiveMQ 异常
- javascript - 如何将 PostgreSQL 时间戳与 moment.js 进行比较并仅指定日期?
- bash - sed – 转义变量中的单引号
- r - 有没有办法从表函数中获得不同的计数
- python - 下次如何用立即替换 NaT
- ruby-on-rails - Rails each_slice 在页面底部显示数组
- reactjs - 如何根据函数调用重新渲染反应组件?
- url-rewriting - IIS URL 重写:formaction 自定义标记属性被忽略
- django - 我想使用当前 url 在当前页面上创建一个指向现有表单的 url 链接
- c# - 编辑清单文件 GDI 设置导致“应用程序无法启动”