Skip to content

Commit e09f086

Browse files
committed
Java: documentation for WebView#addJavascriptInterface query
1 parent e1ff04c commit e09f086

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<!DOCTYPE qhelp PUBLIC
2+
"-//Semmle//qhelp//EN"
3+
"qhelp.dtd">
4+
<qhelp>
5+
<overview>
6+
<p>
7+
The <code>addJavascriptInterface</code> method of
8+
the <code>android.webkit.WebView</code> class allows the web pages of a
9+
WebView to access methods of a Java object via JavaScript.
10+
</p>
11+
12+
<p>
13+
Objects exposed to Javascript are available in all frames of the
14+
WebView.
15+
</p>
16+
</overview>
17+
18+
<recommendation>
19+
<p>
20+
If you need to expose Java objects with Javascript, you should guarantee
21+
that no untrusted third party content is loaded into the WebView.
22+
</p>
23+
</recommendation>
24+
25+
<example>
26+
<p>
27+
In the following (bad) example, a Java object is exposed to Javascript.
28+
</p>
29+
30+
<sample src="AndroidWebViewAddJavascriptInterfaceExample.java"/>
31+
32+
</example>
33+
34+
<references>
35+
<li>
36+
Android Documentation<a href="https://developer.android.com/reference/android/webkit/WebView#addJavascriptInterface(java.lang.Object">addJavascriptInterface</a>
37+
</li>
38+
</references>
39+
40+
</qhelp>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class ExposedObject {
2+
@JavascriptInterface
3+
public String example() {
4+
return "String from Java";
5+
}
6+
}
7+
8+
webview.getSettings().setJavaScriptEnabled(true);
9+
webview.addJavaScriptInterface(new ExposedObject(), "exposedObject");
10+
webview.loadData("", "text/html", null);
11+
webview.loadUrl("javascript:alert(exposedObject.example())");

0 commit comments

Comments
 (0)