我正在使用深度链接,当通过 IntentFilter 将日语字符串从 Web 传递到 Android 时遇到问题。有一些代码:
用 Html 代码初始化 webview:
String encode = URLEncoder.encode("namhv://category?category_name=レビュー", "UTF-8");
Log.e(TAG, "Url Encode: " + encode);
Log.e(TAG, "Url Decode:" + URLDecoder.decode(encode, "UTF-8"));
WebView webView = (WebView) findViewById(R.id.wv_content);
webView.getSettings().setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
String html = "<html><body>\n" +
"<br><a href=\"" + encode + "\">test go tab</a><br>" +
"</body></html>";
Log.e(TAG, html);
webView.loadData(html, "text/html", "UTF-8");
处理意图:
public boolean handleDeepLinkEvent(Intent intent) throws UnsupportedEncodingException {
if (intent.getData() != null) { //deep link
String cateName = intent.getDataString();
Log.e(TAG, cateName);
Log.e(TAG, URLDecoder.decode(cateName, "UTF-8"));
return true;
}
return false;
}
(1) 来源字符串:namhv://category?category_name=レビュー
(2) UTF8编码后的字符串:namhv%3A%2F%2Fcategory%3Fcategory_name%3D%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC
(3) 通过意图接收的字符串:namhv://category?category_name=%C3%A3%C6%92%C2%AC%C3%A3%C6%92%E2%80%9C%C3%A3%C6%92 %C2%A5%C3%A3%C6%92%C2%BC
(4) UTF8解码后的字符串:namhv://category?category_name=レビュー 在我的预期中,(2)和(3)是一样的,(1)和(4)是一样的。但我不知道通过 IntentFilter 传递时 Android 对字符串做了什么。