Теперь с Android 9 Pie запросы без шифрования работать не будут. И по умолчанию Система ожидает, что вы будете использовать TLS по умолчанию.Вы можете прочитать эту функцию здесь Так что, если вы делаете запросы только через HTTPS, вы в безопасности. Но как насчет приложений, которые отправляют запросы через разные сайты, например, браузерных приложений.

Как включить запросы ко всем типам подключений HTTP и HTTPS в Android 9 Pie?

Ответы (9)

Самый простой способ реализовать это - использовать этот атрибут в вашем AndroidManifest.xml, где вы разрешаете все http для всех запросов:



Но если вам нужны дополнительные конфигурации для разных ссылок, например, разрешая http для некоторых доменов, но не для других доменов, вы должны предоставить res / xml / networkSecurityConfig. xml файл.

Для этого в Android 9 Pie вам нужно будет установить networkSecurityConfig в вашем манифесте application тег, например:



    




    

Затем в вашей папке xml вам теперь нужно создать файл с именем network_security_config точно так же, как вы назвали его в манифесте, и оттуда содержимое вашего файла должно быть вот так, чтобы разрешить все запросы без шифрования:



    
        
            
        
    

Оттуда вам хорошо. Теперь ваше приложение будет запрашивать все типы подключений. Дополнительную информацию по этой теме читайте здесь.

ПОЛНОСТЬЮ РАБОЧЕЕ РЕШЕНИЕ для Android или React-native пользователям, столкнувшимся с этой проблемой, просто добавьте это android: usesCleartextTraffic = "true" в файле AndroidManifest.xml вот так:

android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">

между .. тег, например:


        
      
 

Вы можете проверить, отправляете ли вы clearText через HTTP Исправлено: https://medium.com/@son.rommer/ fix-cleartext-traffic-error-in-android-9-pie-2f4e9e2235e6
ИЛИ
В случае прекращения поддержки HTTP-клиента Apache (от Google): В Android 6.0 мы удалили поддержку HTTP-клиента Apache. Начиная с Android 9, эта библиотека удаляется из пути к загрузочному классу и по умолчанию недоступна для приложений. Чтобы продолжить использование HTTP-клиента Apache, приложения, ориентированные на Android 9 и выше, могут добавить в свой AndroidManifest.xml следующее:

Источник https://developer.android.com/about/versions/pie/android-9.0-changes-28

Просто установите флаг usesCleartextTraffic в теге приложения файла AndroidManifest.xml. Нет необходимости создавать конфигурационный файл для Android.

 

Для приложений React Native во время отладки добавьте блок xml, упомянутый @Xenolion, в response_native_config.xml, расположенный в / Android / приложение / SRC / отладка / res / xml

Аналогично следующему фрагменту:



    
        localhost
        10.0.2.2
        10.0.3.2
    
    
        
            
        
    

Простой способ

Добавить usesCleartextTraffic к AndroidManifest.xml


Указывает, намеревается ли приложение использовать сетевой трафик с открытым текстом, например HTTP с открытым текстом. Значение по умолчанию для приложений, нацеленных на API уровень 27 или ниже, - «true». Для приложений, нацеленных на API уровень 28 или выше, по умолчанию установлено значение «false».

Простая установка android: usesCleartextTraffic = "true" на вас AndroidManifest.xml

android:usesCleartextTraffic="true"

Ваш AndroidManifest.xml выглядит как



   
       
            
                
                
            
       
    

Надеюсь, это вам поможет.

У меня та же проблема, и я заметил, что моя конфигурация безопасности имеет разные ТЕГИ, например, в ответе @Xenolion указано


    
        localhost
    

поэтому я меняю ТЕГИ «domain-config» на «base-config» и работаю, например:


    
        localhost
    

Это сработало для меня,

добавьте этот xml-файл в: andriod / app / src / main / res / xml / network_security_config.xml

network_security_config.xml

xml/network_security_config.xml


    
        
            
        
    
    
        your_domain1
    
    
        your_domain2
    

then add this code to AndroidMenifest.xml


      
      
      ...

        

2022 WebDevInsider