Question

Il est connu pour être difficile d'obtenir le texte sélectionné dans une WebView parce que la sélection de texte est WebView en fait manipulé par une classe privée, WebTextView .

Cependant, avec le récent Android 4.0 Consignes de conception , il semble être une lueur d'espoir d'y parvenir grâce à des barres d'action contextuelles (OEC). Il dit :

Utilisez OEC chaque fois que vous permettent à l'utilisateur de sélectionner des données via un appui long. Vous pouvez contrôler le contenu de l'action d'un CAB afin d'insérer les actions que vous souhaitez à l'utilisateur de pouvoir effectuer.

Suis-je mal interpréter cela? Y at-il un moyen de récupérer le texte sélectionné à partir d'une WebView via un CAB?

Après une longue sélection du mode de clic et de texte commence, je peux en détecter le début de ActionMode et modifier la copie originale / coller Menu; cependant, je ne peux pas comprendre tout à fait comment récupérer réellement le texte sélectionné.

Était-ce utile?

La solution

Vous ne pouvez pas le faire encore avec l'API actuelle.

a déposé une demande de fonctionnalité pour ce - Numéro 24841: WebView devrait permettre aux applications de fournir une barre de contextuelle Action http://code.google.com/p/android/issues/detail?id=24841

En fait, dans WebView 4.0 a hardcoded son propre barre d'action contextuelle (CAB). CAB a un dos de référence au WebView et avec cette référence, il peut obtenir le texte sélectionné. Je ne sais pas comment vous avez pu détecter le départ de ActionMode et de modifier le menu, mais si vous étiez en mesure de faire tout cela, alors vous êtes coincé parce que getSelection () est forfait-privé actuellement. Je déposé que comme une question distincte et liée à la question précédente ci-dessus.

Autres conseils

Vous pouvez utiliser javascript pour obtenir le texte sélectionné. Window.getSelection (), et la fonction de l'utilisation addJavascriptInterface WebView pour retourner le résultat

Merci pour vos informations, j'ai résolu un problème difficile .. Je veux juste ajouter une fonction dans le actionmode. Ce qui suit est mon code, peut être utile pour les autres.

@Override
public ActionMode onWindowStartingActionMode(Callback callback) {
    // TODO Auto-generated method stub
    ActionMode mode = super.onWindowStartingActionMode(callback);
    mode.getMenuInflater().inflate(R.menu.actions, mode.getMenu());
    mode.getMenu().findItem(R.id.action_add).setOnMenuItemClickListener(new OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item) {
            // TODO Auto-generated method stub
            Log.i("", "onMenuItemClick add ");
            return false;
        }
    });
    return mode;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top