AndroidProject
AndroidProject copied to clipboard
MessageDialog在@JavascriptInterface标记的方法中不显示
【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】
MessageDialog在@JavascriptInterface标记的方法中不显示
-
框架版本【必填】:java -13.1
-
问题描述【必填】:继承自BaseDialog的MessageDialog在@JavascriptInterface标记的方法中不显示
-
复现步骤【必填】:webview中嵌套了一个网页,网页按钮点击时调用@JavascriptInterface标记的本地方法后,在方法里写的dialog.show后不显示弹窗,但postDelayed延迟后可正常显示,代码如下
@JavascriptInterface
public void evokeAddress(String args) {
/*直接调用不显示弹窗*/
new MessageDialog.Builder(WholesaleWaresDescActivity.this)
.setTitle("哈哈哈")
.setMessage("哈哈哈哈哈哈")
.show();
/*dialog延迟后正常显示*/
postDelayed(new Runnable() {
@Override
public void run() {
new MessageDialog.Builder(WholesaleWaresDescActivity.this)
.setTitle("哈哈哈")
.setMessage("哈哈哈哈哈哈")
.show();
}
},10);
}
}
-
是否必现【必填】:是
-
出现问题的手机信息【必填】:Vivo 华为p30
-
出现问题的安卓版本【必填】:Android 10 鸿蒙2.0
请回答
-
是部分机型还是所有机型都会出现【必答】:Vivo 华为p30
-
AndroidProject 最新的版本是否存在这个问题【必答】:是
-
是否已经查阅框架文档还未能解决的【必答】:是
-
issue 是否有人曾提过类似的问题【必答】:否
-
是否可以通过 AndroidProject 工程来复现该问题【必答】:否
-
使用原生的权限 API 是否会出现该问题【必答】:否 原生AlertDialog可正常弹出
其他
-
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
-
提供截图或视频(根据需要提供,此项不强制)
-
提供解决方案,在postDelayed延迟后正常显示,代码如下
@JavascriptInterface
public void evokeAddress(String args) {
/*dialog延迟后正常显示*/
postDelayed(new Runnable() {
@Override
public void run() {
new MessageDialog.Builder(WholesaleWaresDescActivity.this)
.setTitle("哈哈哈")
.setMessage("哈哈哈哈哈哈")
.show();
}
},10);
}
}
@shimingyue1994 小伙子,那你有没有研究过 MessageDialog 为什么在其他地方可以显示?但是偏偏在 Js 方法里面不行?
@shimingyue1994 小伙子,那你有没有研究过 MessageDialog 为什么在其他地方可以显示?但是偏偏在 Js 方法里面不行?
研究了 ,但没研究出来;不过这个问题也不影响我i使用,我延迟10ms后就可以显示了,这个issues可以关掉了;写这个issues主要是看别人有没有遇到过这个问题,遇到了可以参考这个解决
@shimingyue1994 小伙子,你打印一下 Js 方法是在哪个线程中回调就明白了。
啊 原来时没在主线程中 我runOnUiThread切到主线程中就显示了,谢谢轮子哥