在用微信的时候,发现微信建立了自己的独立账户管理,同时在联系人中,可以直接点击发送信息,查看朋友圈等功能,感觉挺方便了
然后就做了相关方面的调研,主要从两个方面,进行了研究
1、账号管理的是实现机制和同步实现方式
这个看:http://blog.csdn.net/swust_chenpeng/article/details/39401497
或者直接:http://blog.csdn.net/w2865673691/article/details/37403147
http://blog.csdn.net/u010002056/article/details/9210157
2、关于同步syncAdapter
这个主要参考sdk sample中的SampleSyncAdapter
导入可能提示的错误:
Permission is only granted to system apps android.permission.WRITE_SECURE_SETTINGS
Window -> Preferences -> Android -> Lint Error Checking.
In the list find an entry with ID = ProtectedPermission
. Set the Severity to something lower than Error. This way you can still compile the project using Eclipse.
http://blog.csdn.net/xjanker2/article/details/6146289
这里最后提到上传到gae时,可能提示moudle找不到:“其中遇到的一个model moudle找不到的问题需要你在model中新建一个__init__.py的空文件,来说明是一个python模块,如果你也遇到此问题,希望对你有帮助。”
但是这个工程必须的配合server端使用,而server端需要搭建在Google App Engine,所以就得先在gae上新建一个app,然后记住appId即可。这是由于samplesyncadapter_server端的代码是基于python实现,所有我们去https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python下载Google App Engine SDK for Python下载下来进行解压,关于它的使用,我们可以参考下:
http://blog.sina.com.cn/s/blog_bd0b53180101e9rw.html
http://lampeter123.iteye.com/blog/390536
http://www.qrong.com/archives/495
http://ego008.iteye.com/blog/554757
http://bbs.chinaunix.net/thread-1505938-1-1.html
感觉都差不多吧,随便看个就行了,然后我们利用google_appengine目录下(sdk的安装目录)的appcfg.py命令上传服务端代码到gae,命令:appcfg.py update \workspace\AuthenticatorActivity\samplesyncadapter_server\但是我这边上传的时候老提示出错:appcfg.py:2416 An error occurred processing file '': HTTP Error 401: Unauthorized. Aborting.,不知道什么原因,后来在appcfg.py后面加了个参数 --oauth2 ,具体原因不知道,可以看下:https://developers.google.com/appengine/docs/python/tools/uploadinganapp,上传成功之后,我们再输入:yourAppId/appspot..com我们sample syncadapter的页面就出来了
然后在配合客户端就可以用了
最后想要在联系人中,点击某个item,也能跳转到指定的intent,我们可以再manifest.xml中进行配置:
<activity android:name=".authenticator.AuthenticatorActivity" android:label="@string/ui_activity_title" android:theme="@android:style/Theme.Dialog" android:excludeFromRecents="true" android:configChanges="orientation"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="vnd.android.cursor.item/vnd.samplesyncadapter.profile"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
一定要加<category/>标签不然,联系人里面无法调用该intent,这时候点击对应的mineType类型,就可以跳转到对应的Activity
从age上同步下来的联系人时只读 了,不知道怎么回事???
图中弹出的对话框是点击View Profile弹出来的Activity(theme是dialog样式的)