1. 程式人生 > >js呼叫android中方法的版本相容問題

js呼叫android中方法的版本相容問題

在android API Level 17及以上的版本中,就會出現js調用不了android的程式碼,這是版本相容問題,之前做過相關的東西查了好久才找到相關答案。

需要在呼叫的方法上面加一個註解:@JavascriptInterface,這個註解需要匯入一個包:import android.webkit.JavascriptInterface; 

下面是程式碼:

android端java程式碼

@Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        this.loadUrl("file:///android_asset/www/index.html");
         
        //給js設定呼叫的方法
        this.appView.addJavascriptInterface(new JavaScripdtObject(), "android");
         
    }
    /**
     * 供js呼叫的物件方法
     * 
     * @author YUJIAN
     * 
     */
    public class JavaScripdtObject {
 
        @JavascriptInterface//加入這個註解
        public void runAndroidMethod(String str) {
            Toast.makeText(MainActivity.this, "被js呼叫"+str, Toast.LENGTH_SHORT)
                    .show();
        }
    }
js呼叫程式碼:
function getNode4()
{
    var str = "javascrip木德";
     
    //呼叫android程式碼
    window.android.runAndroidMethod(str);
     
}
</script>
 
<input type="button" value="獲取頁面中的節點" onclick="getNode4()" />

在引用中再加入
import android.webkit.JavascriptInterface
這個引用即可