2012-07-04 5 views
0

Я пытаюсь выбрать текст в webview, после того, как я выберу текст, мне нужно решить, что делать дальше. Не копируйте выделенный текст. У меня больше выбора для пользователь на выбор. Я имею в виду, после того, как пользователь выбрал текст в веб-обзоре, могу ли я запросить некоторую кнопку для дальнейшего? Я попытался использовать emulateshiftheld, чтобы решить мою проблему. Но в документах Google сказано: «Этот метод устарел». также, я не могу запросить кнопку выбора. вы можете щелкнуть ссылку, чтобы увидеть, что я имею в виду. ссылка: https://public.blu.livefilestore.com/y1pHhMR2iyIbQN7uJ2C-9CLLJBosWAZw2r4MvD0qyyTG-QWUM-06i6HFu4Fn4oaWnHMbDyTBOa-CPwN6PwoZNifSQ/select.jpg?download&psid=1Кто-нибудь знает, как выбрать текст в webview в android? не использовать emulateShiftHeld, так как в документах сказано: «Этот метод устарел»

+0

картины ссылка https://public.blu.livefilestore.com/y1pHhMR2iyIbQN7uJ2C-9CLLJBosWAZw2r4MvD0qyyTG-QWUM-06i6HFu4Fn4oaWnHMbDyTBOa-CPwN6PwoZNifSQ/select.jpg?download&psid=1 – songtzu

ответ

0

Оклейка соответствующий код из WebView emulateShiftHeld() on Android Newer SDK's

/** 
* Select Text in the webview and automatically sends the selected text to the clipboard 
*/ 
public void selectAndCopyText() { 
    try { 
    KeyEvent shiftPressEvent = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0); 
    shiftPressEvent.dispatch(mWebView); 
    } catch (Exception e) { 
     throw new AssertionError(e); 
    } 
} 
+0

это так же, как и я. – songtzu

+0

Я хочу, чтобы у пользователя был шанс сговориться, что делать дальше. A. распечатать выделенный текст. B. Выберите выделенный текст. , поэтому мне нужно переопределить обратный вызов выбранного текста. – songtzu

0

Вопрос очень старый, но и для других людей здесь решение с JavaScript для API 19+. Просто добавьте это к вашему WebView:

public void getSelectedText(final SelectedTextInterface selectedTextInterface) { 
    evaluateJavascript("(function(){return window.getSelection().toString()})()", new ValueCallback<String>() { 
     @Override 
     public void onReceiveValue(final String selectedText) { 
      if (selectedText != null && !selectedText.equals("")) { 
       //If you don't have a context, just call 
       //selectedTextInterface.onTextSelected(selectedText); 
       if (context instanceof Activity) { 
        ((Activity) context).runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          selectedTextInterface.onTextSelected(selectedText); 
         } 
        }); 
       } else selectedTextInterface.onTextSelected(selectedText); 
      } 
     } 
    }); 
} 

public interface SelectedTextInterface { 
    void onTextSelected(String selectedText); 
}  

Когда вы закончите с выбора текста, просто назвать его:

webView.getSelectedText(new YourWebView.SelectedTextInterface() { 
    @Override 
    public void onTextSelected(String selectedText) { 
     //Your code here 
    } 
});  

Я надеюсь, что это может быть полезно для некоторых людей :-)