js呼叫android中方法的版本相容問題
阿新 • • 發佈:2019-02-16
在android API Level 17及以上的版本中,就會出現js調用不了android的程式碼,這是版本相容問題,之前做過相關的東西查了好久才找到相關答案。
需要在呼叫的方法上面加一個註解:@JavascriptInterface,這個註解需要匯入一個包:import android.webkit.JavascriptInterface;
下面是程式碼:
android端java程式碼
js呼叫程式碼:@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(); } }
function getNode4()
{
var str = "javascrip木德";
//呼叫android程式碼
window.android.runAndroidMethod(str);
}
</script>
<input type="button" value="獲取頁面中的節點" onclick="getNode4()" />
在引用中再加入
import android.webkit.JavascriptInterface
這個引用即可