0

I want send data to javascript to show in my html page.

This is my java code to create json but I don't know how can I convert my string variable to json object and how get that in to javascript:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    myBrowser = (WebView)findViewById(R.id.mybrowser);

    final MyJavaScriptInterface myJavaScriptInterface = new MyJavaScriptInterface(this);
    myBrowser.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");

    myBrowser.getSettings().setJavaScriptEnabled(true);
    myBrowser.setWebChromeClient(new WebChromeClient());
    myBrowser.loadUrl("file:///android_asset/index.html");

    final SQLiteDatabase mydatabase1 = openOrCreateDatabase("CopyCollection", MODE_PRIVATE, null);
    String tmp = "";
    String JsonTxt = "";
    Cursor c = mydatabase1.rawQuery("SELECT * FROM Details ", null);
    if(c.moveToFirst()){
        do{
            String id = c.getString(0);
            String app = c.getString(1);
            String txt = c.getString(2);
            String text_time = c.getString(3);
            tmp += "{\"ID\":"+id+",\"App\":\""+app+"\",\"Content\":\""+txt+"\",\"Date\":\""+text_time+"\"},";
        }while(c.moveToNext());
    }
    JsonTxt = "["+tmp+"]";
    myBrowser.loadUrl("javascript:AlertContent("+JsonTxt+")");
    c.close();
    mydatabase1.close();}

JavaScript :

function AlertContent(msg){alert(msg);}

1 Answers1

0

On how to convert your Java objects into JSON properly, see this: Convert object to JSON in Android.

To pass this object to JavaScript, you may use WebView.evaluateJavascript method, see How does evaluateJavascript work?; or use WebView.loadUrl with javascript: scheme, see this.

Community
  • 1
  • 1
Mikhail Naganov
  • 6,643
  • 1
  • 26
  • 26
  • I change my code to send variable by mybrowser.loadurl(); but when I alert that in the javascript it doesn't show anything – user3001854 Mar 15 '15 at 07:56
  • @user3001854: WebView doesn't show alerts itself, like browsers do, instead it delegates that to the embedder app. You need to provide a `WebChromeClient` subclass that overrides `onJsAlert` [method](http://developer.android.com/reference/android/webkit/WebChromeClient.html#onJsAlert(android.webkit.WebView,%20java.lang.String,%20java.lang.String,%20android.webkit.JsResult)) via `WebView.setWebChromeClient`. – Mikhail Naganov Mar 15 '15 at 09:49