Autore Topic: Ottenere email dai contatti tramite Intent  (Letto 740 volte)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Ottenere email dai contatti tramite Intent
« il: 14 Ottobre 2011, 16:12:20 CEST »
0
dopo tanto stress che vi ho dato, oggi nel porgervi l'ennesima richiesta di aiuto,posto uno script per ottenere l'indirizzo email da un contatto (cosi potro' essere utile ad altri niubbi come me ^^).
premetto che gran parte dello script non e' materiale mio, ma trovato in rete.
dopo il codice ci sarà l'ennesima domanda :
Codice (Java): [Seleziona]
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        }


// inizio lancia contact picker
    private static final int CONTACT_PICKER_RESULT = 1001;
        String email;
        Cursor cursor;
    String DEBUG_TAG =null;
    public void doLaunchContactPicker(View view) {
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
        startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
    }
 // fine lancio contact picker
       
   
 // handling the result
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
            case CONTACT_PICKER_RESULT:
                Cursor cursor = null;
                String email = "";
                try {
                    Uri result = data.getData();
                    Log.v(DEBUG_TAG, "mostro i risultati trovati: "
                            + result.toString());

                    // get the contact id from the Uri
                    String id = result.getLastPathSegment();

                    // query for everything email
                    cursor = getContentResolver().query(Email.CONTENT_URI,
                            null, Email.CONTACT_ID + "=?", new String[] { id },
                            null);

                    int emailIdx = cursor.getColumnIndex(Email.DATA);

                    // let's just get the first email
                    if (cursor.moveToFirst()) {
                        email = cursor.getString(emailIdx);
                        Log.v(DEBUG_TAG, "Got email: " + email);
                    } else {
                        Log.w(DEBUG_TAG, "Nessun resultato");
                    }
                } catch (Exception e) {
                    Log.e(DEBUG_TAG, "Errore nel prendere i dati della email", e);
                } finally {
                    if (cursor != null) {
                        cursor.close();
                    }
                    EditText emailEntry = (EditText) findViewById(R.id.invite_email);
                    emailEntry.setText(email);
                    if (email.length() == 0) {
                        Toast.makeText(this, "Nessuna email trovata per questo contatto.",
                                Toast.LENGTH_LONG).show();
                    }

                }

                break;
            }

        } else {
            Log.w(DEBUG_TAG, "Attenzione, ci sono stati dei problemi");
        }
    }}
manifest:
Codice (XML): [Seleziona]
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".InviteActivity"
                 android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>
main.xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
 <TableRow
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:id="@+id/tableRow1">
    <EditText  
       android:layout_height="wrap_content"  
       android:hint="inserire email"  
       android:id="@+id/invite_email"  
       android:inputType="textEmailAddress"  
       android:layout_width="wrap_content"  
       android:layout_toLeftOf="@+id/do_email_picker"  
       android:layout_alignParentLeft="true">
        </EditText>
   
    <Button  
       android:layout_width="wrap_content"  
       android:layout_height="wrap_content"  
       android:id="@+id/do_email_picker"  
       android:text="browse"  
       android:layout_alignParentRight="true"  
       android:onClick="doLaunchContactPicker">
        </Button>  
</TableRow>
</LinearLayout>

la domanda e':
nella guida ho letto che e' possibile ricevere tutti gli indirizzi email di un contatto, nel caso ne abbia piu di uno..
per chiarire meglio, riporto quello che dice la guida:
Citazione
Codice (Java): [Seleziona]
if (cursor.moveToFirst()) {
    int emailIdx = cursor.getColumnIndex(Email.DATA);
    email = cursor.getString(emailIdx);
    Log.v(DEBUG_TAG, "Got email: " + email);
}
It’s important to remember that a contact may have many addresses. If you wanted to give the user the option of choosing from multiple email addresses, you could display your own email chooser to pick amongst these after the user has chosen a specific contact.
in pratica se non ho capito male, dovrei mettere uno spinner..ma in che modo ricevere gli altri indirizzi e inserirli nello spinner?
se puo' essere utile vi metto il link della guida originale:
http://mobile.tutsplus.com/tutorials/android/android-essentials-using-the-contact-picker/
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

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
Re:Ottenere email dai contatti tramite Intent
« Risposta #1 il: 15 Ottobre 2011, 12:06:30 CEST »
+1
ciao frecciak , ti posto due link il primo porta allo stesso esempio che hai postato  con la differenza che puoi scaricarti il progetto completo ... il secondo invece trovi il codice sorgete di una app  "ContactManager" che puoi trovare anche nelle api demo  in cui viene proprio proposto come ricavare più indirizzi email ecc...

1)http://android10.org/index.php/articlesgeneralprogramming/187-using-the-contact-picker

2)http://developer.android.com/resources/samples/ContactManager/index.html

3) http://developer.android.com/reference/android/provider/ContactsContract.html

ciao  ;-)
È 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 !

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:Ottenere email dai contatti tramite Intent
« Risposta #2 il: 18 Ottobre 2011, 20:34:12 CEST »
0
grazie mille alex..
me lo studio per bene, ma penso che ci siano tutte le risposte che cercavo in quella demo ^^
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!