2

我有一个音频的 HTTP URL。

当 android TargetSDKVersion 为 26 时,该 URL 与 ExoPlayer v2.7.0 一起工作正常。

当 TargetSDKVersion 设置为 28 时,它不起作用。

收到以下错误:

W/MediaPlayer: Couldn't open http://***
java.io.FileNotFoundException: No content provider: http://***

但是,当我设置 HTTPS URL 时,它可以正常工作。

为此,我们在 AndroidManifest 中设置了网络配置

<application
        android:usesCleartextTraffic="true"
        android:networkSecurityConfig="@xml/network_security_config"

而 network_security_config 是:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

此外,用于setAudioAttributes代替setAudioStreamType媒体播放器。

mediaPlayer.setAudioAttributes(
                    new AudioAttributes
                            .Builder()
                            .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                            .build());

对此有什么想法吗?

4

1 回答 1

0

我已将network_security_config更新如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">my_domain.com</domain>
    </domain-config>
</network-security-config>

并从 AndroidManifest 中删除了usesCleartextTraffic属性,如下所示:

<application
        <!--android:name="com.tv2consulting.TV2Application"-->
        android:networkSecurityConfig="@xml/network_security_config"

允许特定域的明文流量对我有用。

于 2020-03-19T13:37:04.703 回答