android js前端交互接收字符串问题
程序员文章站
2022-05-14 10:33:17
...
同样的方式调用传递图片和文字,传递文字方法始终无反应
js代码
//传递图片
function downloadImg (el){
var imgEls = $(el).parents(".listItem").find(".imgBoxInner img");
if(imgEls.length == 0){
layer.msg('无素材');
}else{
var imgs=""
for(var i=0;i<imgEls.length;i++){
imgs += "http://"+location.host+imgEls.eq(i).attr("src")+"|";
}
imgs = imgs.substr(0,imgs.length-1);
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
window.webkit.messageHandlers.saveImages.postMessage(imgs);
} else if (/(Android)/i.test(navigator.userAgent)){
alert(imgs);
downImage.androidDownImage(imgs);
}
}
}
//传递文字
function copyText (el){
var textTitle = $(el).parents(".listItem").find(".title").text();
var textTime = $(el).parents(".listItem").find(".time").text();
var textContent = $(el).parents(".listItem").find(".content").text();
var textStr=textTitle+" "+textTime+" "+textContent;
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
window.webkit.messageHandlers.copyText.postMessage(textStr);
} else if (/(Android)/i.test(navigator.userAgent)){
copyText.androidCopy(textStr);
}
}
android 只有主要代码,webview自己配置
CopyText copyText = CopyText.getInstance();
mWebView.addJavascriptInterface(copyText, "copyString");
copyText.setContext(this,mWebView);
CopyText类
/**
* 复制文字
*/
@JavascriptInterface
public void androidCopy(String text) {
log.e("复制文字--" + text);
StringUtils.copyText(mContext,text);
}
- 导致无法调用原因 如图 两个方法一样导致Android中无法调用
- 解决方法 1、修改js中方法 2、修改js中 copyText.androidCopy(textStr),copyText;Android中与之保持一致即可