当我通过JavaScriptInterface将Java String传递到android webView时,我遇到了一个字符串替换问题。
下面是webView中的HTML(utf-8文件):
<html>
<head>
<script type="text/javascript">
a=window.MyAndroid.getPicEncStr(); //get string from Java side.
function getValue(){
b="ue";
if(a==b) {
d="match";
} else {
d="not match";
}
c=d+":"+a.replace("u","0")+b.replace("u","0");
document.getElementById("test").innerHTML=c;
}
</script>
</head>
<body>
<span id="test">test</span>
</body>
</html>
JavaScriptInterface代码如下:
import java.io.UnsupportedEncodingException;
import android.content.Context;
public class JavaScriptInterface {
private String unicodeToUtf8(String s) {
String str=null;
try {
str=new String( s.getBytes("utf-8") , "utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
public String getPicEncStr() {
//return "ue"; //not work
return this.unicodeToUtf8("ue"); //not work
}
}
当我调用webView.loadUrl(“javascript:getValue()”)时,无论是从“unicode”转换为“utf-8”,span(“id”=“test”)的结果都是“match:ue0e” “不是。
基本上字符串“a”等于字符串“b”,但替换函数不适用于a,仅适用于b。
有人可以帮我吗?
感谢。
答案 0 :(得分:0)
我似乎找到了解决问题的方法:
<html>
<head>
<script type="text/javascript">
a=window.MyAndroid.getPicEncStr(); //get string from Java side.
function getValue(){
b="ue";
if(a==b) {
d="match";
} else {
d="not match";
}
a=new String(a); //<-- force convert java string to javascript string.
c=d+":"+a.replace("u","0")+b.replace("u","0");
document.getElementById("test").innerHTML=c;
}
</script>
</head>
<body>
<span id="test">test</span>
</body>
</html>
仍然不明白为什么。当我转储“a”时,它显示“ ue ”,当我尝试转储“a [0]”时,它显示“未定义”,但是“b [0 ]“是”你“,我只能将图像与Java / Javascript字符串相互兼容,因此,需要进行显式转换。