Autore Topic: selezione testi in webview ... ho trovato degli es , ma non riesco a farli ...  (Letto 952 volte)

Offline ALEX88-ANDR0!D

  • Utente normale
  • ***
  • Post: 173
  • The Special One
  • Respect: +13
    • Google+
    • droidev88
    • Mostra profilo
  • Dispositivo Android:
    HTC DESIRE HD
  • Sistema operativo:
    WINDOWS 7
ciao a tutti ,

tempo fa avevo chiesto come rendere selezionabile un testo (textview) arraggiandomi con un edittext con parametro "imput type: "none , ed un po di codice preso qui Android-er: Copy and Paste using ClipboardManager[/url] sono riuscito im parte a risolvere ,dico in parte perche se seleziono un altro parametro esattamente "autolink" che fa in modo che dei testi  che iniziano per www faranno partire il brosware , numeri telefonici subito selezionabili per iniziare subito la telefonata ... mi fanno annullare la selezione del testo rimanente ... percaso qualcuno ha dei conisgli da darmi.

scusatemi se sono andato un po offtopic prima, ritornando sul discorso per cui ho aperto questo topic , per seconda soluzione al mio problema ho pensato di utilzzare una webview  (con file html ) caricato offline  (precedentemente messo in asset ) e utilizzare del codice presente
android - Selecting text in a WebView? - Stack Overflow[/url]
 oppure
http://groups.google.com/group/android-developers/browse_thread/thread/d15a58ec236cf9a5?pli=1

 ho provato a implementare tutti i due i codici , ma senza nessu risultato , sicuramente sbaglio qualcosa ... mi potete aiutare , vi posto il codice
Codice (Java): [Seleziona]
package it.apogeo.android.cap11.webviewclienttest;

import java.lang.reflect.Method;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;

public class WebViewClientTestActivity extends Activity {
        /*
         * Tag del Log
         */

        private final static String LOG_TAG = "WebViewClientTestActivity";
        /*
         * Riferimento alla WebView
         */

        private WebView webView;

        /** Called when the activity is first created. */
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Gestiamo le informazioni relative alle feature della finestra
        requestWindowFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.main);
        // Otteniamo il riferimento alla WebView
        webView = (WebView)findViewById(R.id.webView);        
        // Abilitazione delle opzioni di Zoom
        webView.getSettings().setBuiltInZoomControls(true);
        Log.i(LOG_TAG, "WebView obtained!");
       // cod per rendere cliccabile il testo prova1
        KeyEvent shiftPressEvent = new KeyEvent(0,0,
                KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
           shiftPressEvent.dispatch(webView);
       
           webView.setWebViewClient(new LoggedWebViewClient(){
 
                        @Override
                        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                                // Intercettiamo l'URL e lo assegnamo alla webView attraverso
                                // il metodo loadUri
                                loadUriOnWebView(url);
                                // Ritorniamo true per indicare di avergestiro l'URL
                                // in modo personalizzato
                                return true;
                        }
               
        });
        webView.setWebChromeClient(new WebChromeClient() {
                /**
                 * Questo metodo viene invocato passando un indicatore del
                 * progresso della barra di caricamento della WebView. Si tratta
                 * di un valore che va da 0 a 100 mentre quello della ProgressBar
                 * della barra va da 0 a 10000
                 */

                 public void onProgressChanged(WebView view, int progress) {
                     setProgress(progress * 100);
                 }
       });
   
    }

        public void loadUri(View button) {
                Log.i(LOG_TAG, "loadUri");
                // Carichiamo un indirizzo URL
                loadUriOnWebView("[url]http://www.massimocarli.it");
       
        }
       
        public void loadData(View button) {
                Log.i(LOG_TAG, "loadData");
                // Carichiamo un contenuto HTML
                StringBuilder htmlData = new StringBuilder("<html>");
                htmlData.append("<head><title>MC Home</title></head>");
                htmlData.append("<body>");
                htmlData
                                .append("<a href='[url]http://www.massimocarli.it'>Go to MC Home</a>");
                htmlData.append("</body>");
                htmlData.append("</html>");
                webView.loadData(htmlData.toString(), "text/html", "ISO 8859-1");
        }
       
        /*
         * Permette l'invocazione del metodo loadUrl anche da una classe interna
         */

        private void loadUriOnWebView(String uri) {
                webView.loadUrl(uri);
        }
       
//secondo codice selezione
public void selectAndCopyText() {
            try {
                Method m = WebView.class.getMethod("emulateShiftHeld", null);
                m.invoke(this, null);
            } catch (Exception e) {
                e.printStackTrace();
                // fallback
                KeyEvent shiftPressEvent = new KeyEvent(0,0,
                     KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
                shiftPressEvent.dispatch(this);
            }
        }
// fine secondo codice selezione
}

se inserisco solo il primo codice non ho nessun problema , l'app parte , ma non succede nulla alla pressione prolungata sul testo , invece se insetrisco il secondo codice ho degli errori  esattamente 2 warning

Citazione
The argument of type null should explicitly be cast to Class[] for the invocation of the varargs method getMethod(String, Class...) from type Class<WebView>. It could alternatively be cast to Class for a varargs invocation
Citazione
The argument of type null should explicitly be cast to Object[] for the invocation of the varargs method invoke(Object, Object...) from type Method. It could alternatively be cast to Object for a varargs invocation


per quanto riguarda invece il codice preso dal secondo link ho provato a iniziare vederlo stasera , ma anche li ho dei problemi ...

ciao a tutti , vi ringrazio anticipatamente ...

edit , nel mentre ho trovato altri codici esattamente questo
http://cosmez.blogspot.com/2010/04/webview-emulateshiftheld-on-android.html ma pure qui nulla ... >:( >:(

« Ultima modifica: 02 Marzo 2011, 23:56:01 CET da ALEX88-ANDR0!D »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !