安卓Java与js的互相调用分析

首先看看Java调用js:

先上js代码:

function halloJava(arg){
         document.getElementById("content").innerHTML =
             ("hallo,native friend:"+arg );
    }
然后是Java代码:

webView.loadUrl("javascript:halloJava("+"'"+name+"'"+")");
上述的代码实现了从Java中调用js中的halloJava的方法,并传入了一个name的参数;


再来看js调用Java:

先上js代码:

再来看Java代码:

webView.addJavascriptInterface(new JSInterface (),"Android");//首先配置webview

class JSInterface {
    @JavascriptInterface//添加注解
     public void halloJs(String arg){
                   Toast.makeText(MainActivity.this,arg,Toast.LENGTH_SHORT).show();
     }
}
上述代码实现了在js中调用了Java类JSInterface的对象“Android”中的JavascriptInterface注解修饰的halloJs的方法,并传入了“JS中传来的参数”的参数;


上述的两种情况适用于APP已经集成了webview并且是在APP的webview内加载网页,然后实现Java与js的互相调用,但是还有另一种情况,通过浏览器访问某一网页的时候,如何跳转到对应APP的对应activity页面呢?当然能,看下面的实现方式:

首先,在manifest文件中对对应的activity添加intent-filter标签;



    
    
        
        
        
        
        
        
    
接着,在SchemeActivity中接收并处理URI请求,可以跳转到不同的界面;

// 尝试获取WebApp页面上过来的URL
Uri uri = getIntent().getData();
if (uri != null) {
    StringBuffer sb = new StringBuffer();
    // 完整的url信息
    sb.append("url: " + uri.toString());
    // scheme部分
    sb.append("\nscheme: " + uri.getScheme());
    // host部分
    sb.append("\nhost: " + uri.getHost());
    // 访问路劲
    sb.append("\npath: ");
    List pathSegments = uri.getPathSegments();
    for (int i = 0; pathSegments != null && i < pathSegments.size(); i++) {
        sb.append("/" + pathSegments.get(i));
    }
    // Query部分
    sb.append("\nquery: ?" + uri.getQuery());
   
    tv.setText(sb.toString());
}
最后,在webAPP页面上,通过如下方式调用;


                    

你可能感兴趣的:(Java,Android)