android 出于安全原因,特权进程中不允许使用WebView

b4qexyjb  于 2023-04-28  发布在  Android
关注(0)|答案(1)|浏览(524)

我们正在使用React Native构建WebRTC的应用程序。当我们将其更改为系统应用程序时,它会崩溃并显示以下错误消息:

03-28 15:39:13.467  7273  7613 E AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
03-28 15:39:13.467  7273  7613 E AndroidRuntime: Process: com.daxiaoipc, PID: 7273
03-28 15:39:13.467  7273  7613 E AndroidRuntime: java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:236)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at android.webkit.CookieManager.getInstance(CookieManager.java:47)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at com.facebook.react.modules.network.ForwardingCookieHandler.getCookieManager(ForwardingCookieHandler.java:136)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at com.facebook.react.modules.network.ForwardingCookieHandler.get(ForwardingCookieHandler.java:53)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at okhttp3.JavaNetCookieJar.loadForRequest(JavaNetCookieJar.kt:47)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at com.facebook.react.modules.network.ReactCookieJarContainer.loadForRequest(ReactCookieJarContainer.java:44)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:74)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
03-28 15:39:13.467  7273  7613 E AndroidRuntime:        at java.lang.Thread.run(Thread.java:919)

以下是一些要点:
1.错误消息为For security reasons, WebView is not allowed in privileged processes

  1. AndroidManifest.xml中有android:sharedUserId="android.uid.system"
    1.我们在项目中没有使用WebView
    1.我们在Android 10上使用react-nativereact-native-webrtc
    1.崩溃是由fetch调用引起的。fetch调用okhttp3okhttp3调用webkit,然后调用webview。我们可以从上面的调用堆栈中看到调用链。
    1.当我们把它改回正常的应用程序时,它就能工作了。
    我们的问题是:我们该如何解决这个问题呢?
2ul0zpep

2ul0zpep1#

我们通过根据this pose挂钩webview来解决这个问题。看起来React Native依赖于webview。由于我们将使用React Native开发系统应用程序,我们希望Facebook将来能够消除对webview的依赖。

相关问题