将设备更新到Android Pie 9.0后未加载视图

问题描述 投票:0回答:3

我最近将手机更新为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

android android-recyclerview android-viewpager android-9.0-pie android-internet
3个回答
2
投票

试试这些解决方案

解决方案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>

在res目录下创建xml,然后在etwork_security_config.xml文件夹中创建nxml

有关更多信息

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

Download Manger not working in Android Pie 9.0 (Xiaomi mi A2)


1
投票

我想的唯一可能的错误是。在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目录,然后在xml文件夹中创建network_security_config.xml


1
投票

为了增强用户隐私,Android 9引入了一些行为更改,例如限制后台应用访问设备传感器,限制从Wi-Fi扫描中检索到的信息,以及与电话,电话状态和Wi-相关的新权限规则和权限组Fi扫描。

无论目标SDK版本如何,这些更改都会影响在Android 9上运行的所有应用。

android:usesCleartextTraffic

指示应用程序是否打算使用明文网络流量,例如明文HTTP。默认值是true”。当属性设置为“false”时,平台组件(例如,HTTP和FTP堆栈,DownloadManager,MediaPlayer)将拒绝应用程序使用明文流量的请求。强烈建议第三方图书馆遵守此设置。避免明文流量的关键原因是缺乏机密性,真实性和防止篡改:网络攻击者可以窃听传输的数据并在不被检测的情况下对其进行修改。

此标志在尽力而为的基础上得到尊重,因为考虑到提供给他们的访问级别,不可能阻止来自Android应用程序的所有明文流量。例如,没有预期Socket API将遵循此标志,因为它无法确定其流量是否为明文。但是,来自应用程序的大多数网络流量由更高级别的网络堆栈/组件处理,这些堆栈/组件可以通过从ApplicationInfo.flags或NetworkSecurityPolicy.isCleartextTrafficPermitted()读取此标志来获得此标志。

© www.soinside.com 2019 - 2024. All rights reserved.