2013-05-04 87 views
0

我想从我的android应用程序的Gmail帐户功能添加导入联系人。所以第一个问题是从gmail获取访问令牌。我发现有GoogleAuthUtil类可以帮助我。
这里是我的代码:使用GoogleAuthUtil导入Gmail联系人

private void importContactsFromGmail() { 
    showProgressDialog(); 
    GetTokenTask getTokenTask = new GetTokenTask(); 
    getTokenTask.execute(); 
    String token = ""; 
    try { 
     token = getTokenTask.get(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    System.out.println(token); 
    hideProgressDialog(); 
} 

private class GetTokenTask extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     String token = ""; 
     try { 
      token = GoogleAuthUtil.getToken(activity, <My_gmail_account>, "https://www.google.com/m8/feeds/"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return token; 
    } 
} 

现在呼吁GoogleAuthUtil.getToken后,我的应用程序完全冻结(在logcat中没有错误)。我完全卡住了,我需要你的帮助。
我的代码有什么问题?也许我应该以其他方式导入联系人?

+0

什么设备,你运行的? – 2013-05-09 05:56:03

+0

Bersh,你可以请给我的源获取android中的Gmail联系人?我需要这个。 – Noundla 2013-06-10 07:18:47

回答

1

不确定这是否相关,但在主线程上调用.get()方法不正确,因为是阻塞方法。

如果以这种方式使用AsyncTask会怎么样?

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     new GetTokenTask().execute(); 
    } 

    static class GetTokenTask extends AsyncTask<Void, Void, String> { 

     @Override 
     protected String doInBackground(Void... unused) { 
      String token = ""; 
      try { 
       token = GoogleAuthUtil.getToken(activity, <My_gmail_account>, "https://www.google.com/m8/feeds/"); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return token; 
     } 

     @Override 
     protected void onPostExecute(String token) { 
      Toast.makeText(MainActivity.this, token, Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

(我写无需编译它,也许它需要进行调整)

0

在Android设备上,Gmail联系人在本地同步到设备上,并可通过公开的Contacts Provider获得,因此您无需使用Google API来提取已有的内容。整个training series专门用于检索联系人列表。

请注意,联系人培训系列确实假定您已经了解了内容提供商,因此也可以阅读the basics of Content Providers

+0

是的,但用户可以因某种原因禁用同步。在这种情况下,我想让用户有可能从Gmail导入联系人,避免与手机同步 – Bersh 2013-05-04 14:34:39

相关问题