android - ActionMode ओवरराइड में वेबदृश्य का चयनित पाठ कैसे प्राप्त करें



webview (1)

मैं प्रासंगिक कार्रवाई मेनू में कुछ कस्टम मेनू आइटम जोड़ रहा हूँ मुझे WebView में चयनित शब्दों के साथ एक वेब खोज सुविधा देने की आवश्यकता है।

मैं इस कोड का उपयोग कर ActionMode को ओवरराइड कर रहा हूँ।

@Override
    public void onActionModeStarted(ActionMode mode) {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            if (mActionMode == null) {
                mActionMode = mode;
            Menu menu = mode.getMenu();

            mode.getMenuInflater().inflate(R.menu.menu_search, menu);
        }
    }
    super.onActionModeStarted(mode);
}


public void onContextualMenuItemClicked(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_search:
            //HERE I WANT TO GET THE TEXT: HOW CAN I?
            break;
    }

    if (mActionMode != null) {
        mActionMode.finish();
    }
}

मैं वेबव्यू में उपयोगकर्ता द्वारा चुने गए शब्द का उपयोग करके अपनी साइट खोजना चाहता हूं, लेकिन मुझे चयनित पाठ पाने का तरीका नहीं मिलता है। मुझे ये कैसे मिल सकता है, कोई भी कृपया मदद करें

अग्रिम में धन्यवाद।


WebView से टेक्स्ट चयन प्राप्त करने का एकमात्र तरीका जावास्क्रिप्ट पर आधारित है। यह एक्शन मोड के लिए विशिष्ट नहीं है, यह है कि WebView डेवलपर्स के दृष्टिकोण के अनुसार WebView पाठ चयन को पुनर्प्राप्त किया जाना चाहिए। उन्होंने जानबूझ कर जावा से पाठ चयन तक पहुंचने के लिए एपीआई प्रदान करने का निर्णय नहीं लिया।

समाधान में 2 दृष्टिकोण शामिल हैं

एंड्रॉइड एपीआई> = 1 के साथ आप evaluateJavascript कर सकते हैं evaluateJavascript :

webview.evaluateJavascript("(function(){return window.getSelection().toString()})()",
new ValueCallback<String>()
{
    @Override
    public void onReceiveValue(String value)
    {
        Log.v(TAG, "SELECTION:" + value);
    }
});

पुराने पर आपका एकमात्र रिसोर्ट एक कस्टम जावास्क्रिप्ट इंटरफ़ेस है जो String स्वीकार करने वाली एक विधि के साथ है, जिसे आपको webview.loadUrl माध्यम से कॉल करना चाहिए। webview.loadUrl उसी चीज़ से गुजर रहा है:

webview.loadUrl("javascript:js.callback(window.getSelection().toString())");

जहां js संलग्न जावास्क्रिप्ट इंटरफ़ेस है:

webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(new WebAppInterface(), "js");

तथा

public class WebAppInterface
{
    @JavascriptInterface
    public void callback(String value)
    {
        Log.v(TAG, "SELECTION:" + value);
    }
}




actionmode