2015-03-24 6 views
5

Ich versuche eine Teilmenge in der Einstellungs-App meines Geräts auszuwählen, und ich sehe diese Ausnahme. Bedeutet dies, dass Einstellungen ein privilegierter Prozess sind und nicht auf Webview zugreifen können?java.lang.UnsupportedOperationException: Aus Sicherheitsgründen ist WebView in privilegierten Prozessen nicht erlaubt.

Ich habe versucht, von Einstellungen HDMI Option auswählen, ist dies die Ausnahme-Stack:

03-23 08:45:03.301 E/AndroidRuntime(3299): Caused by: java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:96) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.getFactory(WebView.java:2194) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.ensureProviderCreated(WebView.java:2189) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.setOverScrollMode(WebView.java:2248) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.view.View.<init>(View.java:3588) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.view.View.<init>(View.java:3682) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.view.ViewGroup.<init>(ViewGroup.java:497) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:55) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.<init>(WebView.java:544) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.<init>(WebView.java:489) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.<init>(WebView.java:472) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.<init>(WebView.java:459) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.webkit.WebView.<init>(WebView.java:449) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at com.android.settings.HDMI3DPlaySettings.onCreate(HDMI3DPlaySettings.java:123) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.Fragment.performCreate(Fragment.java:2031) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:863) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.BackStackRecord.run(BackStackRecord.java:834) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1452) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:483) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at com.android.settings.SettingsActivity.switchToFragment(SettingsActivity.java:1002) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at com.android.settings.SettingsActivity.onCreate(SettingsActivity.java:599) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.Activity.performCreate(Activity.java:5990) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
03-23 08:45:03.301 E/AndroidRuntime(3299):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2320) 
+0

Haben Sie '' in Ihrem Manifest? –

+0

Ja..die Ausnahme ist hier in android Quellcode vorhanden: https: //android.googlesource.com/platform/frameworks/base/+/master/core/java/android/webkit/WebViewFactory.java final int uid = android .os.Process.myUid(); if (uid == android.os.Process.ROOT_UID || uid == android.os.Process.SYSTEM_UID) { Neue Nicht unterstützteOperationException auslösen ( "Aus Sicherheitsgründen ist WebView in privilegierten Prozessen nicht erlaubt"); –

+0

Ja, die Berechtigung ist in der App vorhanden. –

Antwort

3

ich den gleichen Fall nicht erfüllt; Hinzugefügt [android: sharedUserId = "android.uid.system"] in Manifest und verwendet die Webansicht in APP; Es war alles in Ordnung in Android 5.0.2 Projekt, während in 5.1 Projekt gescheitert ...

+0

Ich habe gelernt, dass die Verwendung von Webview in einer System-App die Sicherheit des Systems beeinträchtigt, also wenn möglich, finden wir Alternativen zur Verwendung von Webview. –

+0

Haben Sie eine alternative Lösung gefunden? Vielen Dank. – sjkm

+1

Es funktioniert nicht wieder in 6.0.1, haben Sie eine Alternative gefunden? Wenn ja, bitte kommentieren Sie das gleiche. – Jaydev

0

Diese Ausnahme von WebViewFactory erzeugt wird, hier ist der Code:

final int uid = android.os.Process.myUid(); 
     if (uid == android.os.Process.ROOT_UID || uid == android.os.Process.SYSTEM_UID 
       || uid == android.os.Process.PHONE_UID || uid == android.os.Process.NFC_UID 
       || uid == android.os.Process.BLUETOOTH_UID) { 
      throw new UnsupportedOperationException(
        "For security reasons, WebView is not allowed in privileged processes"); 
     } 

so, wenn Sie versuchen, Verwenden Sie die Webansicht mit der erwähnten UID-Nutzung, die App stürzt ab.

Ich muss auch WebView verwenden, um HTML in meiner App anzuzeigen, kann aber keine Standardlösung finden.

+0

versuchen Sie, eine Bibliothek wie diese zu verwenden: https://github.com/PrivacyApps/html-textview –

Verwandte Themen