Autore Topic: Web Page View Source - Visualizzatore HTML  (Letto 4760 volte)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Web Page View Source - Visualizzatore HTML
« il: 23 Luglio 2010, 13:24:46 CEST »
Tempo fa ho aperto un topic per la lettura del codice HTML di una pagina web. Visto che il browser nativo non permette la lettura del codice html e che le app che ho trovato in giro non soddisfano in pieno, ho deciso di crearla io.

La rilascio in anteprima su questo forum (che mi ha aiutato molto) in versione BETA, quindi tutta da testare!

Grazie a tutti quelli che mi aiuteranno a testare o che mi daranno dei feedback!  :-)

ReadMe
Utility per Android capace di visualizzare il contenuto HTML di una pagina web.
 
Principali caratteristiche:
- Integrazione con il browser nativo tramite "Condividi pagina";
- Modalità fullscreen;
- Ricerca nel testo acquisito;
- Integrazione con gli appunti del sistema;
- Invio per email/sms/ecc... del sorgente acquisito.
- Lista degli URL

Il programma viene distribuito nella speranza che sia utile a qualcuno, ma senza alcuna garanzia.

Per favore, contatta l'autore del software per domande, feedback o bug.

Version
Author:             Marco "Duff" Palermo (http://www.marcoduff.com)
Version Code:       2
Version Name:       1.0.1 BETA
Min SDK version:    7
Target SDK Version: 7
Language:           en, it
License:            Copyright (c) 2010 MarcoDuff.com. All Rights Reserved.
App Icon by:        Dellustrations (Dellustrations | Creative Studios, Web Design, Graphic Design, Marketing Firm in Boston Massachusetts)
Advertising:        AdMod (Mobile Advertising | Buy Ads | Monetize Traffic | AdMob)

ToDoList
- Invio di variabili GET/POST per il recupero della pagina.
- Fullscreen senza pubblicità, titolo e barra di notifica

Known bugs and issues
- Il primo refresh va in timeout

Screenshot
Allegati tre file png
- 01 Programma in funzione
- 02 Menu del programma
- 03 Modalità fullscreen

Download
https://market.android.com/details?id=com.marcoduff.webpageviewsource
« Ultima modifica: 24 Marzo 2011, 16:03:29 CET da MarcoDuff »

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #1 il: 23 Luglio 2010, 14:27:30 CEST »
L' ho provata e sembra fare il suo dovere ed è anche molto comoda ! :-)

Allora, alcune cose che ho visto:

Quando scrolli il sorgente a volte accidentalmente clicchi un link --non lo fa con tutti ma con parecchi, prova-- e genera questa eccezione: (sembra piu riguardante android che al tuo programma... l ho provata con nexus 2.2 ufficiale)

Codice: [Seleziona]
E/AndroidRuntime(15429): FATAL EXCEPTION: main
E/AndroidRuntime(15429): java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
E/AndroidRuntime(15429):         at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:949)
E/AndroidRuntime(15429):         at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:522)
E/AndroidRuntime(15429):         at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:514)
E/AndroidRuntime(15429):         at android.text.Selection.setSelection(Selection.java:74)
E/AndroidRuntime(15429):         at android.widget.TextView$CommitSelectionReceiver.onReceiveResult(TextView.java:6542)
E/AndroidRuntime(15429):         at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:43)
E/AndroidRuntime(15429):         at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(15429):         at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(15429):         at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(15429):         at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(15429):         at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(15429):         at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(15429):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(15429):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(15429):         at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(13440):   Force finishing activity com.marcoduff.webpageviewsource/.WebPageViewSourceActivity

quando si ruota il telefono, la onCreate riparte (normale) e quindi setContentView ("fullscreen" viene tolto), il ricaricamento del sorgente pagina e forse altre cose vengono rifatti...
dai un occhiata qui:
[medio] Rotazione dello schermo e onCreate: problema e soluzioni - Android Developers Italia

poi dei dettagli:
Quando la app si apre, la edittext dell'indirizzo prende il focus, quindi si apre la tastiera  (togliendo spazio al contenuto). è giusto?

La modalità fullscreen pensavo togliesse anche la notif bar e il titolo dell app.


Saluti ;-)



vincenzodicicco

  • Visitatore
Re:Web Page View Source - Visualizzatore HTML
« Risposta #2 il: 23 Luglio 2010, 14:44:31 CEST »
Davvero un ottimo lavoro,  quoto il problema dello scroll, ho una curiosità : come recuperi il codice html?  Sono rimasto sbalordito dalla velocità! Il codice che uso io, che possono anche postare risulta molto più lento!

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #3 il: 26 Luglio 2010, 10:05:19 CEST »
Grazie per i test e felice che vi sia piaciuta!

Andiamo ai ToDo!  :-P

@Qlimax
Il fatto di toccare i link l'avevo notato, e secondo me è scomodo, ma speravo di averlo bypassato inserendo android:clickable="false" nell'xml della EditText dove viene visualizzato il codice HTML. Ma mi sa che non funziona. Esiste allora un modo per ignorare i click ai link?

La rotazione dell'app non l'avevo ancora considerata, la includo nella prossima versione.  ;-)

Il fatto di visualizzare la tastiera all'avvio dell'applicazione è voluto... soltanto la volevo prevedere soltanto quando si apriva l'app dalla home, non quando si carica una pagina dal browser. Faccio una fix!

In effetti un full screen puro sarebbe meglio, quindi cerco il modo di togliere anche la barra di notifica ed il nome dell'applicazione (vedo di togliere anche il banner pubblicitario in questi casi).

@vincenzodicicco
Il codice html è recuperato tramite una semplicissima richiesta fatta con HttpURLConnection, nulla di speciale. Per la velocità ho ottimizzato al massimo il codice (dichiarazione di variabili, concatenazione di stringhe, ecc...). Se vuoi posta il codice che ti do qualche consiglio su come ottimizzarlo.

Grazie a tutti!

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #4 il: 26 Luglio 2010, 14:27:57 CEST »
Ho un paio di problemini nella creazione delle fix...

1. Link degli indirizzi html
Non riesco a togliere il click, per il momento ho tolto completamente l'istruzione android:autoLink="web|email", quindi adesso i link non compaiono affatto. Inoltre non riesco a rendere l'area non editabile, il comando android:inputType="none" non ha effetto sulla EditText.

2. Non riesco a togliere il focus dall'area di testo per non fare comparire la tastiera
Ho provato con un clearFocus() sulla TextView, ma sembra non avere effetto.

3. Fullscreen
Non riesco a fare un fullscreen puro. Ho provato con
Codice (Java): [Seleziona]
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NO_STATUS_BAR,
                        WindowManager.LayoutParams.FLAG_NO_STATUS_BAR);
ma va in errore ("requestFeature() must be called before adding content"), devo per forza far ripartire tutta l'attività per togliere il titolo?

Grazie!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #5 il: 26 Luglio 2010, 14:40:16 CEST »
Per il punto 2, forse questo fa al caso tuo: in WindowManager.LayoutParams, flag SOFT_INPUT_STATE_ALWAYS_HIDDEN = always hide any soft input area when this window receives focus.

Qualcosa tipo:

Codice (Java): [Seleziona]
xxxxxxx.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Web Page View Source - Visualizzatore HTML
« Risposta #6 il: 26 Luglio 2010, 20:35:58 CEST »
2) Prova a impostare nel manifest  come opzione dell'Activity
Codice (XML): [Seleziona]
android:windowSoftInputMode="stateHidden"
3)

Codice (Java): [Seleziona]
requestWindowFeature( Window.FEATURE_NO_TITLE );
getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN );
« Ultima modifica: 26 Luglio 2010, 20:40:30 CEST da Ricky` »

vincenzodicicco

  • Visitatore
Re:Web Page View Source - Visualizzatore HTML
« Risposta #7 il: 27 Luglio 2010, 02:29:37 CEST »
Il codice che uso io è il seguente
Codice (Java): [Seleziona]
                        String prima_riga;
                        URL url = new URL("http://www.google.it");
                        URLConnection conn = url.openConnection();
                        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
                        prima_riga=rd.readLine();
                       

Per esempio questo mi permette di leggere la prima riga, diciamo che ho un buon controllo, la codifica (utf, iso, ecc) in più prelevo magari solo alcune parti del sorgente ecc.Ovviamente per tutto il sorgente, un while che si ferma quando la riga e null, posso anche leggere un carattere per volta, che ne dici?  :-)
« Ultima modifica: 27 Luglio 2010, 11:02:41 CEST da vincenzodicicco »

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #8 il: 27 Luglio 2010, 09:30:45 CEST »
@bradipao, @Ricky` per il punto 2
Provato, vi faccio sapere visto che nell'emulatore la tastiera non mi spunta mai in ogni caso, è soltanto nel device reale che mi da questo problema!

@Ricky` per il punto 3
Il punto è che l'impostazione la devo impostare dopo aver fatto il "setContentView(XXX);". Ed in questo caso mi va in eccezione con:
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
probabilmente devo ridisegnare tutto???

@vincenzodicicco
A parte l'errore nella url (probabile errore di copia ed incolla, dovrebbe essere solo Informaniaci) il codice va bene (è uguale al mio). Ma l'importante è quello che fai dopo!
Assolutamente non leggere un carattere alla volta (almeno non dall'input stream), e quando controlli le righe non utilizzare mai la concatenazione di stringhe tramite operatore +, utilizza la classe StringBuffer!
Se vuoi posta il codice successivo a quello che hai messo adesso, sta li la maggior parte della ottimizzazione!

Grazie a tutti!

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #9 il: 28 Luglio 2010, 14:35:43 CEST »
Nuova versione: 1.0.1 BETA:D

ChangeLog
- Inibizione click dei link su codice html
- Gestione della rotazione del terminale
- Tastiera visibile solo da home
- Lista degli URL

Grazie a tutti quelli che mi hanno aiutato (ovviamente metterò uno Special Thanks a versione ultimata  :-P ).

Download disponibile nel primo post! ;)
« Ultima modifica: 28 Luglio 2010, 14:40:11 CEST da MarcoDuff »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Web Page View Source - Visualizzatore HTML
« Risposta #10 il: 28 Luglio 2010, 14:51:56 CEST »
Grazie a tutti quelli che mi hanno aiutato (ovviamente metterò uno Special Thanks a versione ultimata  :-P ).

Ma che Special Thanks... ti do il mio iban per pm e mi fai un bel bonifico :D

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #11 il: 05 Ottobre 2010, 17:29:49 CEST »
« Ultima modifica: 24 Marzo 2011, 16:03:12 CET da MarcoDuff »

Offline giannign1

  • Utente junior
  • **
  • Post: 85
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #12 il: 24 Marzo 2011, 08:29:04 CET »
Salve sono uno sviluppatore android ma alle primissime armi per ora... Ho visto il topic della tua app che ricava i codici html delle pagine web purtoppo se leggo il codice OR mi manda a un'altra app .... comunque ero interessato a capire come funziona l'integrazione di una applicazione con il comando Condividi (/Share) del menu dei browser. A quanto ho capito lo utilizzavi nella tua applicazione. Potresti indirizzarmi? Non riesco a capire bene come cercarla più che altro perchè se cerco "Condividi" o "Share" vengono fuori attinenze del tutto fuori campo da quello che cerco Ti ringrazio in anticipo Ciao Gianni

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Web Page View Source - Visualizzatore HTML
« Risposta #13 il: 24 Marzo 2011, 16:05:30 CET »
E' ovviamente tutto un gioco di intent-filter, ti basta aggiungere questo alla tua activity:
Codice (XML): [Seleziona]
<intent-filter>
        <action android:name="android.intent.action.SEND"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
        <data android:mimeType="text/plain"></data>
</intent-filter>

Ciao!

Offline marek87

  • Nuovo arrivato
  • *
  • Post: 22
    • Mostra profilo
Re:Web Page View Source - Visualizzatore HTML
« Risposta #14 il: 28 Settembre 2011, 16:35:37 CEST »
Salve ragazzi, è la prima volta che creo un'applicazione android quindi sono ancora molto inesperto.....devo creare una semplice applicazione che legge il codice sorgente di una pagina web, però non riesco a farlo visualizzare....vi posto il codice:
Codice (Java): [Seleziona]
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final EditText eText = (EditText) findViewById(R.id.address);
        final TextView tView = (TextView) findViewById(R.id.pageText);
        final Button button = (Button) findViewById(R.id.ButtonGo);
       
        button.setOnClickListener(new Button.OnClickListener(){
                public void onClick(View v) {
                        try {                          
                                URL url = new URL(eText.getText().toString());
                                URLConnection conn = url.openConnection();
                                //tView.setText("ciao");
                                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                               
                                String line="";
                                String app="";
                                while((line = br.readLine())!= null) {
                                        app += line;
                                }
                                tView.setText(app);
                               
                        } catch(Exception e){
                               
                        }
                }
        });
    }

Grazie!!