0

我正在使用深度链接,当通过 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 对字符串做了什么。

4

1 回答 1

0

此问题已通过替换解决

 webView.loadData(html, "text/html", "UTF-8");

经过

webView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
于 2016-08-30T02:50:33.987 回答