Android java代码与js交互问题

时间:2021-07-28 21:12:14

最近开发项目遇到了需要通过动态加载网络上的网页,然后通过网页上的按钮点击跳转到app中执行位置,找到了以前的代码试了一下基本实现

public class MainActivity2 extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);

webView = (WebView) this.findViewById(R.id.webView2);
//webView.loadUrl("http://10.130.30.69:8000/testjsp.json");
webView.loadUrl("http://211.154.173.165:8000/testjsp.json");

webView.getSettings().setJavaScriptEnabled(true);

webView.addJavascriptInterface(this, "showResult");
}

public void showResult(){
startActivity(new Intent(this,MainActivity.class));
}
}

下面是html中的代码

<body>
<div class="box">
<h2><img src="../images/ok.png"><br><br><br>充值成功</h2>
<div class="button">
<p>
<a href="javascript:showResult.showResult()">返回我的账户</a>
</p>
</div>
</div>
</body>

但是移植到项目中确出现了问题,js死活不肯工作,倒持了一半天也不好使,无奈只能求助百度大神,其中一个帖子给出了答案,再次感谢写帖子大神。

原因在于当api大于17后需要对js调用java代码添加注解和进行代码混淆

    @JavascriptInterface
public void showResult(){
startActivity(new Intent(this,MainActivity.class));
}

代码混淆片段

-keepattributes *Annotation*
-keepattributes JavascriptInterface

再次感谢那位帖子大神,顺便附上链接

http://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/