- 浏览: 549403 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
q649916440:
使用这个的目的是什么呢?感觉没啥优势啊,用起来还绕个大圈
使用googleapi-client-java操作gtasks(一) -
文艺吧网:
还有一个GZIP的问题,我怎么转都乱码最后是因为要解压一下ht ...
关于使用InputStreamReader读取GBK编码文件乱码的问题 -
xiaodousa:
9楼正解!
Android在Listview中使用EditText -
fxiaozj:
zyp09 写道很想知道在Mainactivity界面怎么获得 ...
Android PreferenceActivity 学习笔记 -
zylc369:
楼主很用心,一定要顶
Android通过共享用户ID来实现多Activity进程共享
刷机又把数据刷没了,网络时代,数据还是和服务器同步好了。
从 http://code.google.com/p/google-api-java-client 下载了库和sample,因为此库还在更新中,文档不是很全,自己摸索了一遍,总结在下面。
访问google服务的流程:
1.使用用户名、密码获取授权字符串。
2.使用授权字符串以及其他的参数发送http请求。
3.解析响应,并处理结果。
在Android平台上第一步可以通过AccountManager服务来实现,只要有绑定的Gmail账户,就无须再次输入密码。
第二步以及第三步可以利用Google封装好的库来实现,有两个官方库可用,一个是gdata-client-java,一个是googleapi-client-java,后者是新出的库,具体该采用哪个库可以参见其Wiki根据自己的情况选择。
此处是新项目,无需考虑旧代码,所以选择了后者。
具体的流程:
1.创建一个处理HTTP发送接收的对象,通过GoogleTransport类(库提供)的静态函数create()来创建:
HTTP发送数据需要HTTP Header,GoogleTransport对象内已经自己生成了默认的Header,但是有些成员需要设置数据。
1.1 数据交换协议版本号
1.2 应用名,ap可以设置为自己的唯一字符串即可
1.3 创建Parser用来把HTTP传送的数据转换为对象。
其中AtomParser类是库提供的,但是parser的DICTIONARY要用户定义,用来将缩写转换到url。一般可直接使用从example中复制的:
2.获取授权字符串,大部分操作都需要在HTTP请求中包含此字符串,这个字符串是和用户名相关的。
2.1获取账户对象:
在Android中可以使用AccountManager来获取用户列表,然后由用户选择一个。
Account对象的name成员保存了帐户名字符串,可以将这些名称形成一个列表显示到对话框中供用户选择。
当用户选择后,就可使用Account对象作为参数获取授权字符串了。
2.2获取授权字符串:
通过AccountManager来获取授权字符串,account是账户对象,"cl"是google约定的获取calendar服务授权时的类型。
因为此步操作要进行网络通信,可能会阻塞,所以强制要求启动一个线程来进行,如果在UI线程调用会有异常出来。
另外函数返回后,结果中未必就有授权字符串,有可能会返回需要与用户交互的Intent,比如询问用户是否允许获取授权,代码要进行处理。
此外还要处理异常,当授权过期时,那么还要通过manager.invalidateAuthToken("com.google", this.mAuthToken);来清除cache中的授权字符串。
[待续]
从 http://code.google.com/p/google-api-java-client 下载了库和sample,因为此库还在更新中,文档不是很全,自己摸索了一遍,总结在下面。
访问google服务的流程:
1.使用用户名、密码获取授权字符串。
2.使用授权字符串以及其他的参数发送http请求。
3.解析响应,并处理结果。
在Android平台上第一步可以通过AccountManager服务来实现,只要有绑定的Gmail账户,就无须再次输入密码。
第二步以及第三步可以利用Google封装好的库来实现,有两个官方库可用,一个是gdata-client-java,一个是googleapi-client-java,后者是新出的库,具体该采用哪个库可以参见其Wiki根据自己的情况选择。
此处是新项目,无需考虑旧代码,所以选择了后者。
具体的流程:
1.创建一个处理HTTP发送接收的对象,通过GoogleTransport类(库提供)的静态函数create()来创建:
mTransport = GoogleTransport.create();
HTTP发送数据需要HTTP Header,GoogleTransport对象内已经自己生成了默认的Header,但是有些成员需要设置数据。
1.1 数据交换协议版本号
headers.gdataVersion = "2"; //Google data version
1.2 应用名,ap可以设置为自己的唯一字符串即可
headers.setApplicationName(getString(R.string.app_name));
1.3 创建Parser用来把HTTP传送的数据转换为对象。
AtomParser parser = new AtomParser(); //parse data from http data parser.namespaceDictionary = Namespace.DICTIONARY; mTransport.addParser(parser);
其中AtomParser类是库提供的,但是parser的DICTIONARY要用户定义,用来将缩写转换到url。一般可直接使用从example中复制的:
public class Namespace { public static final XmlNamespaceDictionary DICTIONARY = new XmlNamespaceDictionary(); static { Map<String, String> map = DICTIONARY.namespaceAliasToUriMap; map.put("", "http://www.w3.org/2005/Atom"); map.put("atom", "http://www.w3.org/2005/Atom"); map.put("batch", "http://schemas.google.com/gdata/batch"); map.put("gAcl", "http://schemas.google.com/acl/2007"); map.put("gCal", "http://schemas.google.com/gCal/2005"); map.put("gd", "http://schemas.google.com/g/2005"); map.put("georss", "http://www.georss.org/georss"); map.put("gml", "http://www.opengis.net/gml"); map.put("openSearch", "http://a9.com/-/spec/opensearch/1.1/"); map.put("xml", "http://www.w3.org/XML/1998/namespace"); }
2.获取授权字符串,大部分操作都需要在HTTP请求中包含此字符串,这个字符串是和用户名相关的。
2.1获取账户对象:
在Android中可以使用AccountManager来获取用户列表,然后由用户选择一个。
final AccountManager manager = AccountManager.get(this); //获取AccountManger实例 final Account[] accounts = manager.getAccountsByType("com.google"); //获取所有的google账户对象
Account对象的name成员保存了帐户名字符串,可以将这些名称形成一个列表显示到对话框中供用户选择。
当用户选择后,就可使用Account对象作为参数获取授权字符串了。
2.2获取授权字符串:
Bundle bundle = manager.getAuthToken(account, "cl", true, null, null).getResult();
通过AccountManager来获取授权字符串,account是账户对象,"cl"是google约定的获取calendar服务授权时的类型。
因为此步操作要进行网络通信,可能会阻塞,所以强制要求启动一个线程来进行,如果在UI线程调用会有异常出来。
另外函数返回后,结果中未必就有授权字符串,有可能会返回需要与用户交互的Intent,比如询问用户是否允许获取授权,代码要进行处理。
if (bundle.containsKey(AccountManager.KEY_INTENT)) { //需要和用户交互。使用此intent启动activity。 Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT); int flags = intent.getFlags(); flags &= ~Intent.FLAG_ACTIVITY_NEW_TASK; //清除新任务标志 intent.setFlags(flags); startActivityForResult(intent, REQUEST_AUTHENTICATE); } else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) { //得到了key,执行login authenticatedClientLogin(bundle.getString(AccountManager.KEY_AUTHTOKEN)); }
此外还要处理异常,当授权过期时,那么还要通过manager.invalidateAuthToken("com.google", this.mAuthToken);来清除cache中的授权字符串。
[待续]
- google-api-client-1.2.1-alpha.jar (190.8 KB)
- 下载次数: 42
- google-api-client-1.2.1-alpha-sources.jar (200.7 KB)
- 下载次数: 36
- google-api-client-1.2.1-alpha-javadoc.jar (860.4 KB)
- 下载次数: 30
评论
7 楼
mypyg
2012-07-16
新版本库中可能已经移除了。
http://mypyg.iteye.com/blog/1144965
http://mypyg.iteye.com/blog/1468952
参考这两篇吧。用的最新版本库。
http://mypyg.iteye.com/blog/1144965
http://mypyg.iteye.com/blog/1468952
参考这两篇吧。用的最新版本库。
6 楼
junliang237560659
2012-07-13
不好意思,我下载了运行老是错误,不知道什么原因,说GoogleTransport找不到,能帮我一下吗,很急。
5 楼
kbest
2012-03-27
非常感谢,有什么不懂的再请教,新版本的要导入好几个包
4 楼
mypyg
2012-03-27
附件上传了我那个时候用的包
3 楼
kbest
2012-03-23
希望得到demo工程zhandazhi1314@gmail.com,带jar包
按照给的jar包加了很多次
老出问题
按照给的jar包加了很多次
老出问题
2 楼
kbest
2012-03-23
最近也在用这个
但是下的google-api-java-client 有很多,应该导入哪些Jar包呢?
但是下的google-api-java-client 有很多,应该导入哪些Jar包呢?
1 楼
bluesky139
2011-06-21
楼主的这篇文章很不错,不过是用的calendar,现在我想使用gmail发邮件,不知道楼主有没有搞过。比如"cl"是google约定的获取calendar服务授权时的类型,gmail的话又是什么呢,这个是不是在哪里可以查到,还有后面要向网站请求,网址又是怎么得来的?
发表评论
-
使用googleapi-client-java操作gtasks(二)
2012-03-29 15:34 4635对于很多第三方的机器没有安装Google账户管理,要访问GTa ... -
Android Activity 生命周期再验证
2011-11-22 16:20 8032Android Activity 生命活动 ... -
Nexus one开关键坏掉后的解决方法
2011-10-14 15:17 4504Nexus one手机无法开机了,网上搜索了一下发现很多人遇到 ... -
改包名导致JNI调用失败的问题
2011-08-31 13:41 5201修改以前的代码,移动了一个文件,修改了其包名,在这个文件代码中 ... -
使用googleapi-client-java操作gtasks(一)
2011-08-10 18:07 14931Google Tasks的API终于开放 ... -
一个好用的Google api调试网址
2011-08-09 11:00 1852https://code.google.com/apis/ex ... -
Apk文件Hack试验
2011-07-11 17:54 2894试验1:反编译dex文 ... -
一个由onKeyUp引起的问题
2011-04-19 16:05 1970刚写一个小程序,在用户按下Back按键返回时,需要保存一些数据 ... -
Android自定义组合控件
2011-03-20 18:56 12901目标:实现textview和ImageButton组合,可以通 ... -
也谈Android下一个apk安装多个程序入口图标
2011-03-18 11:28 9234Android中有的Ap功能比较复杂,为了方便用户使用,可以提 ... -
Android AppWidget实例验证
2011-02-25 15:26 134071.创建AppWidget布局,包含两个TextView用来显 ... -
Android Activity LaunchMode 验证
2011-02-23 15:04 8358在Android中,每个Activity有4种LaunchMo ... -
文件夹权限引起的MediaPlayer播放不正常
2011-01-20 20:41 2364写了一个Ap,在程序运行时会解压一些声音文件到/data/da ... -
关于使用InputStreamReader读取GBK编码文件乱码的问题
2011-01-19 17:13 25812BufferedReader reader = new Buf ... -
Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证
2010-12-23 21:10 22808最近在使用Listview又遇到了以前碰到的问题,当Listv ... -
通过Java annotation以及反射机制实现不同类型通用的数据库访问接口
2010-12-22 12:14 5556在日常开发中会遇到这 ... -
Android PreferenceActivity 学习笔记
2010-12-11 12:45 20073在Ap中有时需要设置一些配置参数,这些参数通过配置文件保存。 ... -
Android平台sqlite快速入门
2010-12-07 12:00 2384以下概念都是在Android平台的sqlite3限制下的理解: ... -
Android下使用googleapi-client-java操作google calendar(三)
2010-11-29 18:57 48044.获取日历列表并显示: 原理:向https://www. ... -
Android下使用googleapi-client-java操作google calendar(二)
2010-11-28 22:50 23863.与服务器进行数据交互: 交互是通过HTTP请求及响应来进 ...
相关推荐
Google APIs Client Library for Java 是一套强大的工具,它允许开发者轻松地与Google的各种API进行交互,包括Google Drive、Google Calendar、Google Maps等。这个库为Java开发者提供了简单易用的接口,使他们能够...
农历生日 for Google calendar 农历生日是用来同步农历生日到 Google 日历, 因为 Google 日历不能创建农历重复事件. ...Google API Client Library for Java Lunar-Solar-Calendar-Converter License MIT
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...
4. **日期与时间处理**:熟悉Java或Kotlin中的日期时间API,如java.util.Calendar或java.time包,用于计算和展示生日。 5. **通知服务**:实现AlarmManager和NotificationCompat库来设置生日提醒,发送系统通知。 ...
5. **API集成**:考虑到会议管理可能涉及到邮件邀请、日历同步等功能,应用可能集成了Google Calendar API或其他第三方服务的API。 6. **华为AnyOffice兼容性**:既然在华为的比赛中获奖,应用可能特别优化了对华为...