Autore Topic: Lanciare app Calendario tramite Intent  (Letto 578 volte)

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Lanciare app Calendario tramite Intent
« il: 13 Ottobre 2011, 14:06:25 CEST »
0
Salve a tutti,
mi trovo nella situazione di dover leggere dei contenuti dal web e visualizzarli in determinate TextView.
Dato che questo testo deve essere interattivo e per interattivo intendo che devo poter matchare delle stringhe, renderle cliccabili e lanciare un intent stabilo in relazione al tipo di match.
Ad esempio se individuo un indirizzo eMail, cliccandoci sopra devo poter lanciare un client di posta, ed ho risolto in questo modo banalissimo
Codice (Java): [Seleziona]
TextView testoNotizia = (TextView)findViewById(R.id.testoNotizia);

testoNotizia.setText(testo);
               
Linkify.addLinks(testoNotizia, Linkify.ALL);
il problema è questa costante la costante Linkify racchiude "solo" questi match :[Linkify.EMAIL_ADDRESSES|Linkify.MAP_ADDRESSES|Linkify.PHONE_NUMBERS|Linkify.WEB_URLS]
dunque se voglio intercettare anche una data sotto questo formato 19/12/1983 devo usare la classe Pattern.compile e scrivermi il mio bel pattern.
Fino a qui tutto ok, il mio problema è che non capisco come fare per lanciare l'app Calendario e passargli la data intercettata in modo da poter registrare un evento nell'app Calendario a quella determinata data.
In pratica quale formato deve avere lo schema del dato?
« Ultima modifica: 13 Ottobre 2011, 14:08:13 CEST da wino_7 »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Re:Lanciare app Calendario tramite Intent
« Risposta #2 il: 14 Ottobre 2011, 16:55:21 CEST »
0
Ciao grazie per la segnalazione ma purtroppo questo metodo credo di non poter usare poichè la textView su cui effettuare il parsing contiene del testo su cui devo matchare Url, numeri di telefono, indirizzi mail e date.
Tramite il metodo :
Codice (Java): [Seleziona]
Linkify.addLinks(testoTextView, Linkify.ALL);passandogli la costante Linkify.ALL intercetto Url, numeri di telefono, indirizzi mail e coordinate di una mappa ma non la data.
Dunque devo scrivermi il mio Pattern e magari chiamare il metodo con questi parametri:
Codice (Java): [Seleziona]
/*
         * Permette di riconoscere i numeri di tre cifre
         */

        private final static Pattern CUSTOM_PATTERN = Pattern.compile("\\b[0-9]{3}\\b");       
        /*
         * Schema da pre-pendere alla stringa che matcha
         */

        private final static String CUSTOM_SCHEMA = "custom://www.massimocarli.it/";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Otteniamo il riferimento alla TextView
        TextView textView = (TextView)findViewById(R.id.output);
        // Creiamo una implementazione di Linkify
        Linkify.TransformFilter filter = new Linkify.TransformFilter(){

                @Override
                        public String transformUrl(Matcher match, String url) {
                        // Semplice implementazione che prende le ultime 2 cifre
                                return "number"+url;
                        }
               
        };
        // Applichiamo il transformer
        Linkify.addLinks(textView, CUSTOM_PATTERN, CUSTOM_SCHEMA,null,filter);
Ma dato che la chiamata ad addLinks() a differenza di quanto può sembrare non aggiunge una regola ma la sovrascrive dunque intercetterei solamente il Pattern customizzato e non anche quelli della costante Linkify.ALL poichè fare questo è errato
Codice (Java): [Seleziona]
Linkify.addLinks(testoTextView, Linkify.ALL);
Linkify.addLinks(textView, CUSTOM_PATTERN, CUSTOM_SCHEMA,null,filter);
dunque come potrei AGGIUNGERE a quelli di default il mio Pattern?