Autore Topic: android invio e-mail da activity  (Letto 1209 volte)

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
android invio e-mail da activity
« il: 08 Gennaio 2013, 17:03:40 CET »
0
ciao
sto cercando di inviare una mail da un'activity con contact picker premendo un bottone ,
ho trovato il seguente esempio su stackoverflow (Android Essentials: Using the Contact Picker) :

Codice: [Seleziona]

                //prova invio mail        
                public void doLaunchContactPicker (View view) { 
                Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI); 
                        startActivityForResult(contactPickerIntent, intero); 
            } 
               

il metodo doLaunchContact è associato al bottone ;
per quanto provi a modificare la chiamata al metodo ottengo sempre un errore , es :

public void doLaunchContactPicker (View view) . . . :
Multiple markers at this line
   - Syntax error on token "(", ; expected
   - Syntax error on token ")", ; expected
   - void is an invalid type for the variable doLaunchContactPicker


public int doLaunchContactPicker (View view) . . . :
Multiple markers at this line
   - Syntax error on token "(", ; expected
   - Syntax error on token ")", ; expected
   - Illegal modifier for parameter doLaunchContactPicker; only final is permitted


come devo fare ?
grazie , ciao 

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
R: android invio e-mail da activity
« Risposta #1 il: 08 Gennaio 2013, 18:20:14 CET »
0
Posta tutto il codice della classe, mi sembra che hai postato solo un pezzetto di qualcosa di ben più complesso come una classe anonima.
« Ultima modifica: 08 Gennaio 2013, 18:21:49 CET da Sakazaki »

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android invio e-mail da activity
« Risposta #2 il: 08 Gennaio 2013, 20:04:38 CET »
0
ok , ecco

Codice: [Seleziona]
. . . . .

public class miaClasse extends Activity {
        . . . . . .
        //per prova invio mail
        private static final int PICKER_RESULT_OK = 1001;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lay1);

        . . . . .

                //prova invio mail        
                public int doLaunchContactPicker (View view) { 
                Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI); 
                        startActivityForResult(contactPickerIntent, intero); 
            } 
               
    }


    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       super.onActivityResult(requestCode, resultCode, data);
       if (resultCode == RESULT_OK) { 
            switch (requestCode) { 
            case PICKER_RESULT_OK: 
            {
                    // handle contact results 
                       Uri result = data.getData(); 
                              
                 String email = manageMail (result);
                              
                 if (email.length() == 0)
                     Toast.makeText(this, "No email found for contact.", Toast.LENGTH_LONG).show();
                 else
                     Toast.makeText(this, "email found for contact." + email, Toast.LENGTH_LONG).show();
                 
                 break;
            }
            }
             
            } else { 
                            Context context = getApplicationContext();
                            Toast toast = Toast.makeText(context,"KO : " + data,Toast.LENGTH_SHORT);
                            toast.show();
                   
              // gracefully handle failure 
              //Log.w(DEBUG_TAG, "Warning: activity result not ok"); 
            } 
       
    }

    @SuppressWarnings("finally")
        private String manageMail (Uri result) {
       
             String email = "";
             int emailIdx = 0;
             Cursor cursor = null;
             
             try {
             String id = result.getLastPathSegment();
            
             Context context = getApplicationContext();
             Toast toast = Toast.makeText(context,"result: " + result + " , id: " + id,Toast.LENGTH_SHORT);
             toast.show();
          
             cursor = getContentResolver().query( 
                   Email.CONTENT_URI, null, 
                   Email.CONTACT_ID + "=?", 
                   new String[]{id}, null);
           
             //attenzione , il contato èpuò avere più indirizzi
             emailIdx = cursor.getColumnIndex(Email.DATA);
             if (cursor.moveToFirst()) {
                     email = cursor.getString(emailIdx);
             }
             return email;
                              
             } catch (Exception e) {
                         e.printStackTrace();
             } finally {
                     if (cursor != null)
                 cursor.close();

                     return email;
             }
             
    }       
   
}






Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:android invio e-mail da activity
« Risposta #3 il: 09 Gennaio 2013, 09:07:20 CET »
0
"Creativo" il metodo doLaunchContactPicker dichiarato dentro onCreate...
Un metodo dichiarato dentro un altro metodo non l'avevo ancora mai visto...

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android invio e-mail da activity
« Risposta #4 il: 09 Gennaio 2013, 09:43:05 CET »
0
gulp

hai ragione! grazie , ho spostato e non da più errore
grazie di cuore
ciao

Ps: dopo la risposta come si chiude il topic ?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:android invio e-mail da activity
« Risposta #5 il: 09 Gennaio 2013, 09:46:55 CET »
+1
Tranquillo, normale svista che capita ;)

Dovresti avere un pulsante "risolto" da qualche parte.

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android invio e-mail da activity
« Risposta #6 il: 14 Gennaio 2013, 09:36:04 CET »
0
ciao Sakazaki
scusami se ritorno sull'argomento, non sono riuscito a capire perchè un volta scelto il contatto con :

Codice: [Seleziona]
public void doLaunchContactPicker (View view) { 
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI); 
                startActivityForResult(contactPickerIntent, intero); 
    } 


l'activity non esegua il passo :

Codice: [Seleziona]
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       super.onActivityResult(requestCode, resultCode, data);
       if (resultCode == RESULT_OK) { 
            switch (requestCode) { 
            case PICKER_RESULT_OK: 
            {
                    // handle contact results 
                       Uri result = data.getData(); 
                              
                 String email = manageMail (result);
                              
                 if (email.length() == 0)
                     Toast.makeText(this, "No email found for contact.", Toast.LENGTH_LONG).show();
                 else
                     Toast.makeText(this, "email found for contact." + email, Toast.LENGTH_LONG).show();
                 
                 break;
            }
            }
             
            } else { 
                            Context context = getApplicationContext();
                            Toast toast = Toast.makeText(context,"KO : " + data,Toast.LENGTH_SHORT);
                            toast.show();
                   
              // gracefully handle failure 
              //Log.w(DEBUG_TAG, "Warning: activity result not ok"); 
            } 

come posso trovare l'errore ? se devo fare il debug del contactPicker come devo fare ?

scusa ancora
ciao

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:android invio e-mail da activity
« Risposta #7 il: 14 Gennaio 2013, 10:18:14 CET »
0
Forse dipende dal requestCode che usi, nel senso che non coincide con quello che poi controlli nel onActivityResult.
Quando lanci un'activity attendendo un risultato il secondo parametro serve per identificare il lancio, che viene restituito nel onActivityResult per identificare da che activity torni.

Codice (Java): [Seleziona]
public void doLaunchContactPicker (View view) {
  Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
  startActivityForResult(contactPickerIntent, intero); // intero è il requestCode
}

Codice (Java): [Seleziona]
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (resultCode == RESULT_OK) {
    switch (requestCode) {
    case PICKER_RESULT_OK: // ma PICKER_RESULT_OK è uguale a intero?

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android invio e-mail da activity
« Risposta #8 il: 16 Gennaio 2013, 12:26:18 CET »
0
ciao Sakasaki
scusa se rispondo con un pò di ritardo, ho fatto il controllo che mi chiedevi, cioè quello del campo intero, ecco il codice :

Codice: [Seleziona]
        //prova invio mail        
        public void doLaunchContactPicker (View view) { 
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI); 
                startActivityForResult(contactPickerIntent, RESULT_OK); 
    } 

dove RESULT_OK vale 1;

Codice: [Seleziona]

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       super.onActivityResult(requestCode, resultCode, data);
       if (resultCode == RESULT_OK) { 
            switch (requestCode) { 
            case PICKER_RESULT_OK: 
            {
                    // handle contact results 
                       Uri result = data.getData(); 
    . . . .  ecc.                              

però il risultato non cambia , non sò cos'altro provare
scusa ancora
ciao

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:android invio e-mail da activity
« Risposta #9 il: 16 Gennaio 2013, 12:45:01 CET »
0
Allo startActivityForResult come secondo parametro devi passare il requestCode che poi controlli.
Quindi prova con:
Codice (Java): [Seleziona]
startActivityForResult(contactPickerIntent, PICKER_RESULT_OK);  
 :-)

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
Re:android invio e-mail da activity
« Risposta #10 il: 16 Gennaio 2013, 13:07:37 CET »
0
ho fatto come mi dicevi , non cambia , però scusa con la startactivity dovrebbe far partire il contact picker , poi scelto il contatto dovrebbe essere attivato il metodo onActivityResult vero ? non è che mi mancano dei pezzi ?