Так что я знаю, что есть другие посты, посвященные той же проблеме, и я думаю, что следовал за ними к письму, но, увы, безрезультатно. Я пытаюсь узнать, как заставить мое приложение взаимодействовать с JavaScript. Я просто хочу иметь возможность возвращать значение из моего JavaScript в мою деятельность.
вот моя деятельность:
public class JSExample extends Activity {
WebView mWebView;
String mString;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView)findViewById(R.id.mWebView);
mWebView.addJavascriptInterface(new ClsAccessor(), "accessor");
String html = getAssetsContent("jsinterface.html");
mWebView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
// Log.d("YO!", mString);
}
private String getAssetsContent(String filename){
.....
}
private void closeStream(BufferedReader stream) {
.....
}
class ClsAccessor{
public void setValue(String value){
JSExample.this.mString = value;
}
}
Вот HTML-файл, загруженный моим WebView, который содержит JavaScript, который я хочу запустить:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">
accessor.setValue('Hello!');
</script>
</head>
<body>
<h1>Testing</h1>
</body>
</html>
Это не работает. Когда я запускаю код с помощью «Log.d (« YO! », MString);» uncommented Я получаю исключение нулевого указателя, что означает, что javascript никогда не назначал значение для mString. что я делаю не так?