java - Android call javascript function with parameters without webview -


i call javascript function parameters java in android app, don't need load in webview need call , results js file in assets folder.

i did on ios using javascriptcore, can't find same functionality in android.

looked androidjscore , rihno docs , tutorials not clear on subject.

i load js file string , further can't go how send parameters , results.

here how load file string :

    assetmanager assetmanager = getassets();     string jsfile;      // load js file     inputstream input;     try {         input = assetmanager.open("authenticate.js");          int size = input.available();         byte[] buffer = new byte[size];         input.read(buffer);         input.close();          // byte buffer string         jsfile = new string(buffer);         resulttv.settext(jsfile);         log.d("tag", jsfile);     } catch (ioexception e) {         e.printstacktrace();     } 

the parameters send come edittexts.

the javascript function take 2 parameters , return json

   function authenticate(uname, pword)     {         var authenstring = json.stringify(authenjson);          return authenstring;     } 

any appreciated.

here's how use rhino in android:

/**      *      * @param javascriptcode      * @param functionnameinjavascriptcode      * @param params not pass array of primitives!  example if passing doubles, pass double[], not double[]      * @return      */     public map<string,object> execute(string javascriptcode, string functionnameinjavascriptcode, iterable<string> returnobjectkeys, object... params){          map<string,object> rtn = null;         // every rhino vm begins enter()         // context not android's context         context rhino = context.enter();          // turn off optimization make rhino android compatible         rhino.setoptimizationlevel(-1);         try {             final object[] parameters = new object[params.length + 1];             for(int i=0; < params.length; i++){                 parameters[i] = params[i];             }             parameters[parameters.length - 1] = buildconfig.debug;              scriptable scope = rhino.initstandardobjects();              rhino.evaluatestring(scope, javascriptcode, "javascript", 1, null);              // functionname defined in javascriptcode             object obj = scope.get(functionnameinjavascriptcode, scope);              if (obj instanceof function) {                 function jsfunction = (function) obj;                  // call function params                 object jsresult = jsfunction.call(rhino, scope, scope, parameters);                 if(jsresult == null){                     return null;                 }                 scriptable s = (scriptable) jsresult;                 rtn = convert(s, returnobjectkeys);             }             else {                 throw new illegalargumentexception("no function " + functionnameinjavascriptcode + " found in supplied script");             }         } {             context.exit();         }          return rtn;     }      private map<string,object> convert(scriptable object, iterable<string> keys){          map<string,object> rtn = new hashmap<>();         for(string s : keys){             if(object.has(s,object)){                 rtn.put(s, object.get(s, object));             }         }          return rtn;     } 

i think got of can't find question now.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -