native + h5富文本粘贴时屏蔽图片

目前在做native + h5的应用,但是在富文本复制粘贴时遇到了问题。从新闻或浏览器等,复制图文混排的富文本,粘贴到安卓的webview中显示时,图片可能加载不出来。因部分app做了富文本加载的优化,可能将h5中的img替换为了本地图片显示,导致复制出的src访问不到。

解决方法:
1)获取系统的剪贴板服务

mCM = (ClipboardManager) context.getApplicationContext().getSystemService(CLIPBOARD_SERVICE);

2)在进入h5编辑页面时,更改剪贴板的内容

public void onResume(){
    super.onResume();

    ClipData data = mCM.getPrimaryClip();
    //剪贴板内容为空时,data为null
    if (data != null){
        ClipData.Item item = data.getItemAt(0);

        //item.getHtmlText()方法在api 16后才生效,存储粘贴的富文本content
        //item.getText()存储粘贴的纯文本content

        if (item != null && !TextUtils.isEmpty(item.getText())){
            //替换。注意安卓4.4的系统,直接使用getText的内容创建纯文本数据替换,一直不能生效。内容后加入空格才可以。
            mClipData = data;
            ClipData newData = ClipData.newPlainText(data.getDescription().getLabel(), item.getText() + "    ");
            mCM.setPrimaryClip(newData);
        }
    }
}


3)退出h5编辑页面时,还原剪贴板的内容

    @Override
    public void onPause(){
        super.onPause();
        if (mClipData != null){
            mCM.setPrimaryClip(mClipData);
            mClipData = null;
        }
    }

后续有时间继续研究h5层面能不能拦截粘贴事件,进而更改webview中插入的粘贴内容。

你可能感兴趣的:(native + h5富文本粘贴时屏蔽图片)