Поделиться через


WebView.AddJavascriptInterface(Object, String) Метод

Определение

Внедряет предоставленный объект Java в этот WebView.

[Android.Runtime.Register("addJavascriptInterface", "(Ljava/lang/Object;Ljava/lang/String;)V", "GetAddJavascriptInterface_Ljava_lang_Object_Ljava_lang_String_Handler")]
public virtual void AddJavascriptInterface (Java.Lang.Object object, string name);
[<Android.Runtime.Register("addJavascriptInterface", "(Ljava/lang/Object;Ljava/lang/String;)V", "GetAddJavascriptInterface_Ljava_lang_Object_Ljava_lang_String_Handler")>]
abstract member AddJavascriptInterface : Java.Lang.Object * string -> unit
override this.AddJavascriptInterface : Java.Lang.Object * string -> unit

Параметры

object
Object

Объект Java для внедрения в контекст JavaScript webView. null значения игнорируются.

name
String

имя, используемое для предоставления объекта в JavaScript

Атрибуты

Комментарии

Внедряет предоставленный объект Java в этот WebView. Объект внедряется во все кадры веб-страницы, включая все iframes, используя указанное имя. Это позволяет получить доступ к методам объекта Java из JavaScript. Для приложений, предназначенных для уровня API и более поздних версий android.os.Build.VERSION_CODES#JELLY_BEAN_MR1 , доступ к ним можно получить только android.webkit.JavascriptInterface из JavaScript. Для приложений, предназначенных для уровня android.os.Build.VERSION_CODES#JELLY_BEAN API или ниже, доступ к всем общедоступным методам (включая унаследованные) можно получить, см. важное примечание по безопасности ниже.

Обратите внимание, что внедренные объекты не будут отображаться в JavaScript до следующей загрузки страницы (повторно). Перед внедрением объекта необходимо включить JavaScript. Например:

class JsObject {
               {@literal @}JavascriptInterface
               public String toString() { return "injectedObject"; }
            }
            webview.getSettings().setJavaScriptEnabled(true);
            webView.addJavascriptInterface(new JsObject(), "injectedObject");
            webView.loadData("<!DOCTYPE html><title></title>", "text/html", null);
            webView.loadUrl("javascript:alert(injectedObject.toString())");

<strong>IMPORTANT:</strong><ul><li> Этот метод можно использовать, чтобы Разрешить JavaScript управлять ведущим приложением. Это мощная функция, но также представляет угрозу безопасности для приложений, предназначенных для целевых android.os.Build.VERSION_CODES#JELLY_BEAN приложений или более ранних версий. Приложения, предназначенные для более поздней версии, чем android.os.Build.VERSION_CODES#JELLY_BEAN по-прежнему уязвимы, если приложение работает на устройстве под управлением Android до версии 4.2. Наиболее безопасным способом использования этого метода является целевой android.os.Build.VERSION_CODES#JELLY_BEAN_MR1 объект и обеспечение вызова метода только при запуске в Android 4.2 или более поздней версии. В этих более старых версиях JavaScript может использовать отражение для доступа к общедоступным полям внедренного объекта. Использование этого метода в WebView, содержащего ненадежное содержимое, может позволить злоумышленнику управлять ведущим приложением непреднамеренные способы, выполняя код Java с разрешениями ведущего приложения. Используйте крайнюю осторожность при использовании этого метода в WebView, который может содержать ненадежное содержимое.</li javaScript><> взаимодействует с объектом Java в частном фоновом потоке этого WebView. Поэтому для поддержания безопасности потоков требуется забота. </li li><>, так как объект предоставляется всем кадрам, любой кадр может получить имя объекта и вызвать методы в нем. Нет способа сообщить источнику вызывающего кадра с стороны приложения, поэтому приложение не должно предполагать, что вызывающий объект является надежным, если приложение не может гарантировать, что никакое стороннее содержимое никогда не загружается в WebView даже внутри iframe.<Поля объекта Java /li><> недоступны.</li li>>< Для приложений, предназначенных для уровня android.os.Build.VERSION_CODES#LOLLIPOP API и выше, методы внедренных объектов Java можно перечислять из JavaScript.</li></ul>

Документация по Java для android.webkit.WebView.addJavascriptInterface(java.lang.Object, java.lang.String).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к