Просмотры не загружаются после обновления устройства до Android Pie 9.0 - PullRequest
0 голосов
/ 16 февраля 2019

Я недавно обновил свой телефон до Android 9.0.Приложение, которое я разрабатывал, работало нормально в более ранней версии Android.Но после обновления некоторые виды, требующие интернета, не загружаются.Пустые места отображаются на своих местах.

Он имеет ViewPager в качестве баннера и 2 RecyclerView ниже категорий и сделок соответственно.Все они требуют интернет для загрузки данных.

Я не знаю, требуются ли какие-либо дополнительные разрешения или зависимости в Android Pie.

Логи показывают

NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

Ответы [ 3 ]

0 голосов
/ 16 февраля 2019

Думаю, единственная возможная ошибка.после Android 9 необходимо указать networksecurityconfig для подключения к URL-адресу сервера.Поэтому вам нужно внести следующие изменения в свой код.

Добавить android:networkSecurityConfig="@xml/network_security_config" в тег приложения в вашем AndroidManifest.xml, как это

<application
        android:name=".ApplicationClass"
        android:allowBackup="true"
        android:hardwareAccelerated="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

где network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

вам нужно создать каталог xml в каталоге res, а затем network_security_config.xml в папке xml

0 голосов
/ 16 февраля 2019

Попробуйте эти решения

Решение 1)

Добавьте эту строку в тег приложения в manifest файл

android:usesCleartextTraffic="true"

, как показано ниже

<application
            android:name=".ApplicationClass"
            android:usesCleartextTraffic="true"
            android:networkSecurityConfig="@xml/network_security_config"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">

Добавить этот тег в тег приложения в manifest файл

Решение 2)

Добавить android:networkSecurityConfig="@xml/network_security_config" в тег приложения

<application
        android:name=".ApplicationClass"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

где network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

Создайте xml в каталоге res, а затем n etwork_security_config.xml в папке xml

Для получения дополнительной информации

https://developer.android.com/about/versions/pie/android-9.0-changes-28

Скачать Manger не работает в Android Pie 9.0 (Xiaomi mi A2)

0 голосов
/ 16 февраля 2019

Чтобы повысить конфиденциальность пользователей, в Android 9 введено несколько изменений поведения, таких как ограничение доступа фоновых приложений к датчикам устройств, ограничение информации, получаемой при сканировании Wi-Fi, а также новые правила разрешений и группы разрешений, связанные с телефонными вызовами, состоянием телефона,и сканирование Wi-Fi.

Эти изменения влияют на все приложения, работающие на Android 9, независимо от целевой версии SDK.

android:usesCleartextTraffic

Указывает, намерено ли приложение использовать сетевой трафик в незашифрованном виде, напримероткрытый текст HTTP.Значение по умолчанию верно".Если для атрибута установлено значение «false», компоненты платформы (например, стеки HTTP и FTP, DownloadManager, MediaPlayer) будут отклонять запросы приложения на использование трафика открытого текста.Сторонним библиотекам настоятельно рекомендуется соблюдать этот параметр.Основной причиной отказа от трафика открытого текста является отсутствие конфиденциальности, аутентичности и защиты от взлома: злоумышленник может подслушивать передаваемые данные, а также изменять их, не обнаруживаясь.

Этот флаг соблюдается с максимальной отдачейоснова, потому что невозможно предотвратить весь трафик в виде открытого текста из приложений Android, учитывая уровень доступа к ним.Например, не ожидается, что Socket API будет соблюдать этот флаг, потому что он не может определить, находится ли его трафик в открытом тексте.Однако большая часть сетевого трафика от приложений обрабатывается сетевыми стеками / компонентами более высокого уровня, которые могут учитывать этот флаг, читая его из ApplicationInfo.flags или NetworkSecurityPolicy.isCleartextTrafficPermitted ().

...