Android Q (API level 29) doesn't load HTTPS websites. Gives error: (net::ERR_ACCESS_DENIED)
Android Q (API level 29) doesn't load HTTPS websites. Gives error: (net::ERR_ACCESS_DENIED)
我正在尝试修复 here on Whosebug as the person was trying to make use of WebView
to load Facebook's website "https://facebook.com/" 但无法完成。我查看了代码,发现 onReceivedSslError()
方法未被覆盖。我覆盖了它并对其进行了测试我自己在 Android 模拟器 运行 Android 9(API 级别 28)和更低级别并且它工作 即使没有添加 cleartextTrafficPermitted
但是,在 Android Q(API 级别 29)上进行测试时,我遇到了这个错误:
net::ERR_ACCESS_DENIED
这里是 onCreate
方法的副本:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webDimrah = findViewById(R.id.WebView1);
WebSettings webSettingDimrah = webDimrah.getSettings();
webSettingDimrah.setJavaScriptEnabled(true);
webDimrah.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
handler.proceed();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
});
webDimrah.loadUrl("https://facebook.com/");
}
已将 Internet 权限添加到清单文件。任何有关如何解决此问题的建议将不胜感激:)
在您的清单中确保添加 android:usesCleartextTraffic="true"
Android 6.0 在 android 清单中的应用程序元素下引入了 useCleartextTraffic 属性。 Android P 中的默认值为“false”。将此设置为 true 表示该应用打算使用清晰的网络流量。
您必须在清单中使用 android:usesCleartextTraffic。
如果存在 Android 网络安全配置,Android 7.0(API 级别 24)及更高版本将忽略此标志。
请查看开发者网站的以下说明以了解更多详细信息。
https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic
我正在尝试修复 WebView
to load Facebook's website "https://facebook.com/" 但无法完成。我查看了代码,发现 onReceivedSslError()
方法未被覆盖。我覆盖了它并对其进行了测试我自己在 Android 模拟器 运行 Android 9(API 级别 28)和更低级别并且它工作 即使没有添加 cleartextTrafficPermitted
但是,在 Android Q(API 级别 29)上进行测试时,我遇到了这个错误:
net::ERR_ACCESS_DENIED
这里是 onCreate
方法的副本:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webDimrah = findViewById(R.id.WebView1);
WebSettings webSettingDimrah = webDimrah.getSettings();
webSettingDimrah.setJavaScriptEnabled(true);
webDimrah.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
handler.proceed();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
});
webDimrah.loadUrl("https://facebook.com/");
}
已将 Internet 权限添加到清单文件。任何有关如何解决此问题的建议将不胜感激:)
在您的清单中确保添加 android:usesCleartextTraffic="true"
Android 6.0 在 android 清单中的应用程序元素下引入了 useCleartextTraffic 属性。 Android P 中的默认值为“false”。将此设置为 true 表示该应用打算使用清晰的网络流量。
您必须在清单中使用 android:usesCleartextTraffic。
如果存在 Android 网络安全配置,Android 7.0(API 级别 24)及更高版本将忽略此标志。
请查看开发者网站的以下说明以了解更多详细信息。
https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic