Webview可以在模拟器上正常运行,但不能在设备上运行

时间:2019-07-19 03:49:12

标签: android react-native webview react-native-android

我是新来的本地人。我正在尝试实现一个混合应用程序,该应用程序仅在Webview中显示指向我的网站的链接并显示推送通知。我使用firebase进行通知。我的应用程序在android模拟器上运行良好,但是当我构建apk并将其安装在我的应用程序上时,它仅显示白屏。我知道该应用程序正在运行,因为我的推送通知系统运行良好。模拟器和我的手机都装有Android 9.0。我正在使用来自react-native的webview,而不是来自react-native-webview的webview,这会给我一个警告,不确定是否相关。

更新:我刚刚检查过,该应用程序在android 8设备上可以正常工作,在android 9上则无法正常工作。

以下是我的网络视图的代码

render() {
return (
    <WebView style = {{ width: Dimensions.get('window').width, height: 
    Dimensions.get('window').height }} useWebKit 
    allowUniversalAccessFromFileURLs mixedContentMode = "always" 
    originWhitelist = {['*']} source = {{ uri: 'https://myurl.com/' 
    }} />    
);}
}

1 个答案:

答案 0 :(得分:0)

使用android 9时我也遇到同样的问题,但是当我使用此解决方案时,它解决了我的问题

使用此方法

在yourProject / android / app / src / main / res / xml /文件夹中创建一个新文件

并将其命名为network_security_config.xml

将此代码添加到这个新创建的文件中

<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
     <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config> </network-security-config>

并在应用程序标记内的AndroidManifest.xml文件中

添加这些行

    android:usesCleartextTraffic="true"       
    android:supportsRtl="true"
    android:hardwareAccelerated="true"
    android:networkSecurityConfig="@xml/network_security_config"