android js java 互调 子线程 主线程 直接调用 callback 返回结果

本文介绍了如何解决Android主线程或子线程调用WebView执行JavaScript并获取异步返回结果的繁琐问题。通过动态添加方法到JS,利用反射执行并移除对象,以及使用JSExecutor类和JavaJsHelper封装的方法,简化调用流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1.解决了4.2以下添加JavaScriptInterfaces能够调用Class的漏洞 github 上参考了一国内哥们写的</span>

2.解决了主线程或者子线程调用webview 执行js 返回结果异步繁琐的问题


for 1: 动态添加方法给js   js调用 传方法名 参数名  android端利用反射  调用完了从map中删除对象。

for2:JSExecutor类中



最后在JavaJsHelper封装的调用方法



再看一下 mainactivity 是怎么调用的

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ViewGroup content = (ViewGroup) findViewById(R.id.content);
		CompatibleWebView webview = new CompatibleWebView(this);
		content.addView(webview, 0, 0);
		JavaJsHelper jsHelper = new JavaJsHelper(webview);
		JSONObject params = new JSONObject();
		jsHelper.response("test", params, new JsReturnDataCallback() {
			
			@Override
			public void result(JavaJsResult result) {
				Log.d("123", result.isOk() + "");
			}
		});
	}

}
下载地址 给2分吧


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值