1

ここで私はクリップボードのテキストを取得しようとしています。最初にクリップボードで試し、次にsharedpreferencesで両方の方法を試しました。カスタムWebビューから単語を選択し、jsinterfaceを使用してその単語をコピーすると、動作は同じですが、単語は正常に取得されましたが、その世界を取得しようとした直後に、別の世界が得られると仮定すると、最初に「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とクリップボードテキストに入れられたテキストを取得しようとしていますが、この問題を解決する方法について上記で説明したように、以前に保存したテキストを取得します

     //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