Autore Topic: Destinatari mail crash Gmail  (Letto 740 volte)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Destinatari mail crash Gmail
« il: 06 Luglio 2011, 17:55:53 CEST »
0
Ciao a tutti!
Ho un "piccolo" problema.
Ho seguito quest guida per creare una mail partendo dalla mia applicazione Quick Tip: Enabling Users to Send Email From Your Android Applications – The Easy Way
Praticamente va tutto ok se non per il fatto che l'app crasha quando vado ad indicare i destinatari!
Questo il mio codice:
tutto parte quando clicco su un bottone
Codice (Java): [Seleziona]
bu_sendMails = (Button) findViewById(R.id.bu_createMail);
                bu_sendMails.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                                Intent emailIntent = new Intent(
                                                android.content.Intent.ACTION_SEND);
                                String aEmailList[] = getPeopleMail(cPeopleByEvent);
                                emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);
                                emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Droidgrill - info evento");  
                                emailIntent.setType("plain/text");
                                emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "My message body.");
                                startActivity(emailIntent);
                        }
                });

Questo il metodo per ricavare un array con  le mail dal cursore (che contiene anche altre colonne, a me interessano solo le mail)
Codice (Java): [Seleziona]
// obtained mail-addresses of participants
        private String[] getPeopleMail(Cursor people) {
                String[] mails = new String[100];
                int i = 0;
                people.moveToFirst();
                while(!people.isAfterLast()) {
                        String newMail = people.getString(people.getColumnIndex(AppDB.peoMail));
                        Log.i("MAIL TO ADD", newMail);
                        mails[i]= newMail;
                        i++;
                        people.moveToNext();
                }
                return  mails;
        }

Quest'ultimo metodo funziona bene, infatti il log mi da:
Codice: [Seleziona]
I/MAIL TO ADD(12099): aldo@gmaiiil.it
I/MAIL TO ADD(12099): barbara@gmaiiil.it
I/MAIL TO ADD(12099): carlo@gmaiiil.it
I/MAIL TO ADD(12099): davide@gmaiiil.it

Ma dopo un po' l'app crasha e non capisco dove devo agire per risolvere il prblema perchè non riesco a riconoscere nessuna delle mie classi coinvolte nel logcat..
Lascio l'errore lanciato:
Codice: [Seleziona]
I/MAIL TO ADD(12667): aldo@gmaiiil.it
I/MAIL TO ADD(12667): barbara@gmaiiil.it
I/MAIL TO ADD(12667): carlo@gmaiiil.it
I/MAIL TO ADD(12667): davide@gmaiiil.it
I/ActivityManager(  324): Starting activity: Intent { act=android.intent.action.SEND typ=plain/text cmp=com.google.android.gm/.ComposeActivityGmail (has extras) }
I/ActivityManager(  324): Starting activity: Intent { act=android.intent.action.SEND typ=plain/text flg=0x2000000 cmp=com.google.android.gm/.ComposeActivity (has extras) }
D/AndroidRuntime(12603): Shutting down VM
W/dalvikvm(12603): threadid=1: thread exiting with uncaught exception (group=0x400207e8)
E/AndroidRuntime(12603): FATAL EXCEPTION: main
E/AndroidRuntime(12603): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.gm/com.google.android.gm.ComposeActivity}: java.lang.NullPointerException
E/AndroidRuntime(12603):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(12603):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(12603):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(12603):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(12603):         at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(12603):         at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(12603):         at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(12603):         at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(12603):         at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(12603):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
E/AndroidRuntime(12603):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
E/AndroidRuntime(12603):         at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(12603): Caused by: java.lang.NullPointerException
E/AndroidRuntime(12603):         at android.text.util.Rfc822Tokenizer.tokenize(Rfc822Tokenizer.java:51)
E/AndroidRuntime(12603):         at android.text.util.Rfc822Tokenizer.tokenize(Rfc822Tokenizer.java:169)
E/AndroidRuntime(12603):         at com.google.android.gm.ComposeArea.tokenizeAddressList(ComposeArea.java:993)
E/AndroidRuntime(12603):         at com.google.android.gm.ComposeArea.addAddressesToList(ComposeArea.java:936)
E/AndroidRuntime(12603):         at com.google.android.gm.ComposeArea.addToAddresses(ComposeArea.java:918)
E/AndroidRuntime(12603):         at com.google.android.gm.ComposeArea.initFromExtras(ComposeArea.java:625)
E/AndroidRuntime(12603):         at com.google.android.gm.ComposeActivity.initFromExtras(ComposeActivity.java:1476)
E/AndroidRuntime(12603):         at com.google.android.gm.ComposeActivity.finishOnCreateAfterAccountSelected(ComposeActivity.java:1017)
E/AndroidRuntime(12603):         at com.google.android.gm.ComposeActivity.onCreate(ComposeActivity.java:257)
E/AndroidRuntime(12603):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(12603):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(12603):         ... 11 more


Spero possiate aiutarmi! ;-)
ciao
« Ultima modifica: 06 Luglio 2011, 18:31:56 CEST da cadupper »

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:Destinatari mail crash Gmail
« Risposta #1 il: 06 Luglio 2011, 18:32:59 CEST »
0
non riesco a capire...
Se invece di passare l'array che ho fatto io gli passo questo(come dice nella guida Quick Tip: Enabling Users to Send Email From Your Android Applications – The Easy Way)
Codice (Java): [Seleziona]
String aEmailList[] = { "user@fakehost.com","user2@fakehost.com" };   allora funziona tutto a dovere........... o_O o_O

Funziona tutto a dovere anche se gli do
Codice (Java): [Seleziona]
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{ aEmailList[0]});ma perchè non posso passargli direttamente l'array che ho creato io...??

Come risolvo il mio problema..? penso sia una boiata incredibile ma ci sto perdendo ore.....
« Ultima modifica: 06 Luglio 2011, 18:43:05 CEST da cadupper »

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:Destinatari mail crash Gmail
« Risposta #2 il: 06 Luglio 2011, 19:29:21 CEST »
0
Risolto!
Il problema è che passavo un array con degli elementi non inizializzati.
Ecco il metodo corretto:
Codice (Java): [Seleziona]
// obtained mail-addresses of participants
        private String[] getPeopleMail(Cursor people) {
                String[] mails = new String[people.getCount()];
                int i = 0;
                people.moveToFirst();
                while(!people.isAfterLast()) {
                        String newMail = people.getString(people.getColumnIndex(AppDB.peoMail));
                        Log.i("MAIL TO ADD", newMail);
                        mails[i]= newMail;
                        i++;
                        people.moveToNext();
                }
                return  mails;
        }