Я начинаю работать над приложением на Android, так что у меня мало. Все, что у меня есть, пока только WebView. Я создал проект в Android Studio, и мой проект был настроен как Android InstantApp. Я не уверен, почему и как, но предполагаю, что я упустил возможность для этого при создании проекта.
Я получал сообщение об ошибке от WebView: net :: ERR_CLEARTEXT_NOT_PERMITTED. Когда я погуглил об ошибке, я увидел, что, когда приложение является InstantApp, WebViews могут загружать только сайты с HTTPS и не могут загружать сайт HTTP.
Цель этого приложения - быть чрезвычайно простым проигрывателем 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
Обратите внимание, что здесь написано «... сайт в http://darkorbit.com/ ...», а не «... сайт в https://darkorbit.com/ ...», хотя строка для URL жестко закодирована и говорит «https://darkorbit.com/». Кроме того, я тестирую приложение на эмуляторе, настроенном как Google Pixel 2 под управлением Android 9.
Любая помощь будет оценена по достоинству. Спасибо.
даже я удалил android: networkSecurityConfig = "@ xml / network_security_config" и добавил android: usesCleartextTraffic = "true", тогда это сработало для меня
Решение:
Добавьте следующую строку в свой тег 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
Надеюсь, это поможет.
Я также разработал шаблон Webview и получил ту же ошибку. И теперь это решено. Благодарность
это уже там и все еще показывает ту же ошибку !!! 1
@ABr, вы можете опубликовать свой манифест, пожалуйста?
Спасибо, все работает.
Но почему возникает проблема? Это должно происходить с незащищенными веб-сайтами? Но на самом деле я нашел тот, который должен быть безопасным (например, one.co.il, у которого в начале есть https: //). Даже обычный веб-браузер на Android показывает мне значок замка. Как я могу узнать, безопасен ли веб-сайт?
Не решить, все еще отображается ошибка в Android-пироге
@ Ümañgßürmån Я использую телефонную связь, поэтому у меня нет AndroidManifest.xml. Где я могу добавить этот тег?
не работает с android: networkSecurityConfig set
Я сделал веб-просмотр, подключенный к сайту https, и получаю эту ошибку, вы знаете, почему? Я думал, это только для HTTP-запросов
@taurelas проверьте этот ответ, чтобы установить конфигурацию android:networkSecurityConfig, чтобы разрешить ваш URL: stackoverflow.com/a/50834600/7850685
@Miguel проверьте, есть ли у вас networkSecurityConfig в вашем AndroidManifest.xml под <application ...>. Если вы это сделаете, вы можете попробовать удалить его (если не требуется) или изменить его, чтобы разрешить использование вашего домена. Этот ответ может вам тоже помочь: stackoverflow.com/a/50834600/7850685
Также работал у меня в проекте в Кордове. Изменено значение в cordova/platforms/android/app/src/main/AndroidManifest.xml. Мой env: Кордова 9.0.0, Платформа: Android 8.1.0
Спасибо! Работал для меня :) (Android webview с реактивным родным)
Спасибо, мужик! android webview с реагирующим собственным дескриптором над решением :)
Это сработало. API 30. Спасибо
@AbrahamMathew: Вы добавили его в тег application?
Когда вы вызываете «https://darkorbit.com/», ваш сервер считает, что отсутствует «www», поэтому он перенаправляет вызов на «http://www.darkorbit.com/», а затем на «https://www.darkorbit.com/», ваш вызов WebView блокируется при первом перенаправлении, поскольку это вызов «http». Вместо этого вы можете вызвать «https://www.darkorbit.com/», и это решит проблему.
как насчет поддоменов?
удаление android: networkSecurityConfig = "@ xml / network_security_config" это сработало для меня.