2011-02-26 21 views
5

मुझे उन ईमेल पतों को पुनर्प्राप्त करने की आवश्यकता है जिन्हें उपयोगकर्ता ने अपने जीमेल खाते में संग्रहीत किया है। मेरे ऐप में, उपयोगकर्ता अब उसके एक दोस्त को आमंत्रित करने का फैसला कर सकता है। मैं चाहता हूं कि एप्लिकेशन (यदि उपयोगकर्ता मुझे "ठीक" बताता है) जीमेल में संग्रहीत उपयोगकर्ता के संपर्क ईमेल पते की एक सूची प्रस्तुत करता है, जिसमें से वह एक या अधिक चुन सकता है ...जीमेल उपयोगकर्ता के संपर्क कैसे प्राप्त करें?

मुझे पता है कि Authentication and Authorization for Google APIs" मौजूद है। क्या यह सही तरीका है? और, एंड्रॉइड में उनका उपयोग कैसे करें?

उत्तर

-1

get contact info from android contact picker पर प्रश्न और स्वीकृत उत्तर में एंड्रॉइड देशी संपर्क-पिकर का उपयोग करने का एक उदाहरण है।

+1

मैं फोन में संग्रहीत संपर्क infos, लेकिन ई-मेल पते जीमेल खाते में संग्रहीत (है कि और अधिक तो फोन होते हैं) – Geltrude

+2

की जरूरत नहीं है एंड्रॉयड फोन आम तौर पर जीमेल के साथ अपने संपर्कों संपर्कों पर सिंक के बाद से, फोन जीमेल में संपर्कों के समान होना चाहिए। – Roshan

+1

लेकिन यह उपयोगकर्ता पर निर्भर करता है, चाहे उपयोगकर्ता अपने संपर्क को सिंक करना चाहे या नहीं। – RobinHood

3

मुझे उम्मीद है कि यह मेरे जैसे किसी के लिए मदद करेगा, क्योंकि मैंने इसके लिए बहुत कुछ खोजा है और आखिरकार नीचे दिया गया है।

मैंने Google Contacts API v3 के लिए GData जावा क्लाइंट लाइब्रेरी का उपयोग किया है।

package com.example.cand; 

import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.RandomAccessFile; 
import java.net.MalformedURLException; 
import java.net.URL; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Menu; 

import com.google.gdata.client.Query; 
import com.google.gdata.client.Service; 
import com.google.gdata.client.contacts.ContactsService; 
import com.google.gdata.data.Link; 
import com.google.gdata.data.contacts.ContactEntry; 
import com.google.gdata.data.contacts.ContactFeed; 
import com.google.gdata.util.AuthenticationException; 
import com.google.gdata.util.NoLongerAvailableException; 
import com.google.gdata.util.ServiceException; 

public class MainActivity extends Activity { 
    private URL feedUrl; 
    private static final String username="yourUsername"; 
    private static final String pwd="yourPassword"; 
    private ContactsService service; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     String url = "https://www.google.com/m8/feeds/contacts/default/full"; 

     try { 
      this.feedUrl = new URL(url); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 

     new GetTask().execute(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    private class GetTask extends AsyncTask<Void, Void, Void>{ 

     @Override 
     protected Void doInBackground(Void... params) { 
      service = new ContactsService("ContactsSample"); 
      try { 
       service.setUserCredentials(username, pwd); 
      } catch (AuthenticationException e) { 
       e.printStackTrace(); 
      } 
      try { 
       queryEntries(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

    } 

    private void queryEntries() throws IOException, ServiceException{ 
     Query myQuery = new Query(feedUrl); 
     myQuery.setMaxResults(50); 
     myQuery.setStartIndex(1); 
     myQuery.setStringCustomParameter("showdeleted", "false"); 
     myQuery.setStringCustomParameter("requirealldeleted", "false"); 
//  myQuery.setStringCustomParameter("sortorder", "ascending"); 
//  myQuery.setStringCustomParameter("orderby", ""); 


     try{ 
      ContactFeed resultFeed = (ContactFeed)this.service.query(myQuery, ContactFeed.class); 
       for (ContactEntry entry : resultFeed.getEntries()) { 
        printContact(entry); 
       } 
       System.err.println("Total: " + resultFeed.getEntries().size() + " entries found"); 

     } 
     catch (NoLongerAvailableException ex) { 
      System.err.println("Not all placehorders of deleted entries are available"); 
     } 

    } 
    private void printContact(ContactEntry contact) throws IOException, ServiceException{ 
     System.err.println("Id: " + contact.getId()); 
     if (contact.getTitle() != null) 
      System.err.println("Contact name: " + contact.getTitle().getPlainText()); 
     else { 
      System.err.println("Contact has no name"); 
     } 

     System.err.println("Last updated: " + contact.getUpdated().toUiString()); 
     if (contact.hasDeleted()) { 
      System.err.println("Deleted:"); 
     } 

     //  ElementHelper.printContact(System.err, contact); 

     Link photoLink = contact.getLink("http://schemas.google.com/contacts/2008/rel#photo", "image/*"); 
     if (photoLink.getEtag() != null) { 
      Service.GDataRequest request = service.createLinkQueryRequest(photoLink); 

      request.execute(); 
      InputStream in = request.getResponseStream(); 
      ByteArrayOutputStream out = new ByteArrayOutputStream(); 
      RandomAccessFile file = new RandomAccessFile("/tmp/" + contact.getSelfLink().getHref().substring(contact.getSelfLink().getHref().lastIndexOf('/') + 1), "rw"); 

      byte[] buffer = new byte[4096]; 
      for (int read = 0; (read = in.read(buffer)) != -1;) 
      out.write(buffer, 0, read); 
      file.write(out.toByteArray()); 
      file.close(); 
      in.close(); 
      request.end(); 
     } 

     System.err.println("Photo link: " + photoLink.getHref()); 
     String photoEtag = photoLink.getEtag(); 
     System.err.println(" Photo ETag: " + (photoEtag != null ? photoEtag : "(No contact photo uploaded)")); 

     System.err.println("Self link: " + contact.getSelfLink().getHref()); 
     System.err.println("Edit link: " + contact.getEditLink().getHref()); 
     System.err.println("ETag: " + contact.getEtag()); 
     System.err.println("-------------------------------------------\n"); 
    } 

} 


आवश्यक पुस्तकालय फ़ाइलें: यदि आपने here

  • GData-ग्राहक-1.0.jar
  • GData-ग्राहक-मेटा-1.0.jar
  • GData-संपर्कों से इन जार प्राप्त कर सकते हैं -3.0.jar
  • gdata-contact-meta-3.0.jar
  • gdata-core-1.0.jar
  • guava-11.0.2.jar

नोट: AndroidManifest फ़ाइल में इंटरनेट अनुमति जोड़ें।

<uses-permission android:name="android.permission.INTERNET"/> 
+0

यहां गुवा के लिए लिंक है http://code.google.com/p/guava-libraries/ –

+0

यह काम नहीं कर रहा है –

संबंधित मुद्दे