Basit bir HTML sayfasını yüklemek için Android WebView kullanıyorum. HTML, küçük bir Javascript koduna dayanır.html önce JavaScript'i enjekte et Android ile yüklenmemiş WebView
html yüklenmeden önce Javascript'i enjekte etmem gerekiyor. Yani böyle yapmak:
public class MainActivity extends Activity {
WebView mWebView;
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView)findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(WebView view, String url, String message,JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
mButton = (Button)findViewById(R.id.button);
mButton.setOnClickListener(new myListener());
}
class myListener implements OnClickListener{
int mCount = 1;
@Override
public void onClick(View arg0) {
System.out.println("Load test page=>"+mCount+" times");
mWebView.loadUrl("javascript:var output='This string is defined before html loaded.'");
mWebView.loadUrl("file:///android_asset/test.html");
mCount++;
}
}
}
HTML kodu: JS ve HTML çalışıyor
<html>
<head>
<script>
alert(output);
</script>
<head>
<body>
</body>
</html>
ben butonu ilk kez tıklayın. Ama yükü tekrar çalıştırmak için düğmeye tıkladığımda başarısız oldu.
Kayıtlar:
Load test page=>1 times
Load test page=>2 times
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5
Load test page=>3 times
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5
Herhangi bir öneri?
WebView.loadDataWithBaseURL() http://developer.android.com/reference/android/webkit/WebView.html#loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java'yı deneyin. .lang.String, java.lang.String), varyantı HTML'ye dönüştürün (örneğin dize değişimi) ve ardından dizeyi sayfa olarak yükleyin. – CodeColorist