我开始在Android上开发一个应用程序,所以我没有太多东西。到目前为止,我只有一个WebView。我在Android Studio中创建了这个项目,并且我的项目被设置为一个Android InstantApp。我不确定为什么/如何,但我猜我在创建项目时忽略了它的一个选项。
我从WebView收到一个错误,显示为net::ERR_CLEARTEXT_NOT_PERMITTED。当我在谷歌上搜索这个错误时,我发现当一个应用程序是一个InstantApp时,WebViews只能加载HTTPS的站点,而不能加载HTTPS站点。
这个应用程序的目的是成为一个非常简单的Flash播放器,只为一个网站。这是为了在运行需要Flash的游戏时有更好的性能。这个游戏在darkorbit.com上,这是HTTPS。
MainActivity.java:
package com.tylerr147.darkorbit;
import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView wv = findViewById(R.id.webView1);
wv.loadUrl("https://darkorbit.com/");
wv.setWebViewClient(new CustomWebViewClient());
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginState(WebSettings.PluginState.ON);
}
}和CustomWebViewClient.java
package com.tylerr147.darkorbit;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}我的问题是:如何将我的应用程序禁用为InstantApp,或者如何让此WebView显示站点?
我觉得我提到一些其他细节也很重要:在显示WebView的应用程序中,它还显示“http://darkorbit.com/的网页”无法加载,因为: net::ERR_CLEARTEXT_NOT_PERMITTED
请注意,它显示的是"... site at http://darkorbit.com/ ...",而不是"... site at https://darkorbit.com/ ...“即使URL的字符串是硬编码的,并且是"https://darkorbit.com/“。此外,我正在一个仿真器上测试这个应用程序,该仿真器设置为运行Android 9的Google Pixel 2。
任何帮助都将不胜感激。谢谢。
发布于 2018-10-09 02:20:36
解决方案:
在您的application标记中添加以下行:
android:usesCleartextTraffic="true"如下图所示:
<application
....
android:usesCleartextTraffic="true"
....>更新:,如果您有网络安全配置,如:android:networkSecurityConfig="@xml/network_security_config"
不需要如上所示将明文流量设置为true,而是使用以下代码:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
....
....
</domain-config>
<base-config cleartextTrafficPermitted="false"/>
</network-security-config> 将cleartextTrafficPermitted设置为true
希望能有所帮助。
发布于 2019-03-14 16:49:25
当您调用"https://darkorbit.com/“时,您的服务器会发现缺少"www”,因此它将调用重定向到"http://www.darkorbit.com/“,然后再重定向到"https://www.darkorbit.com/",您的WebView调用在第一次重定向时被阻塞,因为它是一个"http”调用。你可以调用"https://www.darkorbit.com/“来解决这个问题。
https://stackoverflow.com/questions/52707918
复制相似问题