1

在这里,我正在尝试获取剪贴板文本当我立即尝试获得那个世界时,它给了我另一个世界假设首先我复制单词“A”然后我复制单词“B”然后立即尝试获得“B”它给了我“A”这是我的代码里面单击的 webviews 操作项

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

        switch (item.getItemId()) {
        case R.id.action_done:
            getSelectedData();
            mode.finish();
            return true;
            break;
        }
   }

和我的 getSelectedData() 函数

private void getSelectedData() {

    String js = "(function getSelectedText() {" + "var txt;"
            + "if (window.getSelection) {"
            + "txt = window.getSelection().toString();"
            + "} else if (window.document.getSelection) {"
            + "txt = window.document.getSelection().toString();"
            + "} else if (window.document.selection) {"
            + "txt = window.document.selection.createRange().text;" + "}"
            + "JSInterface.getText(txt);" + "})()";
    // calling the js function
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        evaluateJavascript("javascript:" + js, null);
    } else {
        loadUrl("javascript:" + js);
    }
    showDialog();
}

在这个函数中 getText 是来自 javascriptInterface 的函数,我的 webappInterface 类如下

    public class WebAppInterface {
           Context mContext;

       WebAppInterface(Context c) {
       mContext = c;
    }

@JavascriptInterface
public void getText(String text) {
    // put selected text into clipdata
    ClipboardManager clipboard = (ClipboardManager)
            mContext.getSystemService(Context.CLIPBOARD_SERVICE);
    ClipData clip = ClipData.newPlainText("simple text",text);
    clipboard.setPrimaryClip(clip);
    sp.edit().putString("COPIED_TEXT",text).commit();
}
} 

并且在我的 showDialog 函数中,我试图获取放在 sharedpreferences 和剪贴板文本中的文本,但它得到了以前保存的文本,如上所述如何解决这个问题我在 showDIAlog 函数中尝试了两种方式,但没有找到正确的工作

     //ClipboardManager clipboard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE);
        //String selectedClipboardText = "";
        //selectedClipboardText = (String) clipboard
        //      .getText();
        String selectedClipboardText = "";
        selectedClipboardText=BilingualNews.BNPref.getString("COPIED_TEXT", "");

        selectedClipboardText = getFilteredSelfTextWord(selectedClipboardText);
4

0 回答 0