使用GoogleAuthUtil导入Gmail联系人
我想从我的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中没有错误)。我完全卡住了,我需要你的帮助。
我的代码有什么问题?也许我应该以其他方式导入联系人?
不确定这是否相关,但在主线程上调用.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();
}
}
}
(我写无需编译它,也许它需要进行调整)
在Android设备上,Gmail联系人在本地同步到设备上,并可通过公开的Contacts Provider获得,因此您无需使用Google API来提取已有的内容。整个training series专门用于检索联系人列表。
请注意,联系人培训系列确实假定您已经了解了内容提供商,因此也可以阅读the basics of Content Providers。
是的,但用户可以因某种原因禁用同步。在这种情况下,我想让用户有可能从Gmail导入联系人,避免与手机同步 – Bersh 2013-05-04 14:34:39
什么设备,你运行的? – 2013-05-09 05:56:03
Bersh,你可以请给我的源获取android中的Gmail联系人?我需要这个。 – Noundla 2013-06-10 07:18:47