hotlinhao 2013-02-18
为Android应用程序添加社会化分享功能
http://www.189works.com/article-32838-1.html
http://www.cnblogs.com/elleniou/archive/2012/04/30/2476637.html
http://blog.csdn.net/ziyanguang1989/article/details/8286284
正在做个android的小应用,有点想尝试一下社会化分享,比如分享到新浪微博啥的。看一下新浪,人人网的API,说实话功能很全很强大,但虽说有相对的SDK,但是总觉得不方便。
在开发工具--SNS分享中 设置相关的Api key和Api Secret,没有就去申请一个。
然后在Android的配置文件中添加两个Activity。
<activity android:name="com.umeng.api.activity.OauthActivity" android:configchanges="orientation|keyboardHidden"> </activity>
<activity android:name="com.umeng.api.activity.UpdateStatusActivity" android:theme="@style/Theme.IOSched" android:configchanges="orientation|keyboardHidden"> <intent-filter> <action android:name="android.intent.action.VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="android.intent.category.BROWSABLE"></category> <data android:scheme="schema友盟的应用KEY"></data> </intent-filter> </activity>
官方文档的位置还要多一点点...但是我觉得那些看实际情况了。
那个scheme那里主要是为了区分,应用KEY就是你在友盟注册的KEY,因为我有用它的统计SDK,所以有KEY,没有的话去申请一个。
然后添加3个权限,访问网络的权限肯定是必须的,还有判断网络情况,友盟还要求一个读取终端IMEI的权限,一共三个。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> <uses-permission android:name="android.permission.INTERNET"> <uses-permission android:name="android.permission.READ_PHONE_STATE">
然后是资源文件,下载的SDK有,全部复制到项目里面。
目前友盟的SDK支持3家:新浪微博,腾讯微博,人人网。如果你只想用其中的两家或者一家可以在umeng_share_strings.xml中修改
<string name="umeng_share_renr">open</string> <string name="umeng_share_sina">open</string> <string name="umeng_share_tenc">close</string>
不用的写成Close就可以了。不过我觉得没有很大的问题还是3家都要吧,如果只是用1个布局文件有点小瑕疵..看着不顺眼。调用的时候也很简单。
UMSnsService.share(this, “这是内容”);
如果使用模板的话就传一个Hashmap就去就可以了,具体可以看文档。
我觉得友盟做的最好的就是提供其他的API,可以更灵活的使用相关功能了。
比如
1.获取用户授权
UMSnsService.CallbackListener listener = new UMSnsService.CallbackListener() @Override public void onComplete(Bundle value) { String uid = value.getString("uid"); //这是授权完成的uid,使用其他授权服务的凭证 } @Override public void onError(UMSNSException e) { } }; UMSnsService.oauthSina(this, listener);
2.直接分享到特定的SNS提供商
UMSnsService.update(this, UMSnsService.SHARE_TO.SINA, “这是内容”);
3.检查用户是否已经授权
UMSnsService.isAuthorized(this, UMSnsService.SHARE_TO.SINA);
更多的内容还是参考文档。
查看:
总的来说我觉得友盟的分享SDK做的还是不错的,虽然人人分享我一直没有配置成功,而且布局有点问题,但是毕竟大大简化了开发。
希望友盟以后增加一些其他的SNS提供商,然后相关功能越来越强大。
使用 微博、QQ、微信、钉钉 原生 SDK 接入,提供这些平台的登录、分享功能支持。针对业务逻辑对各个平台的接口进行封装,对外提供一致的表现,在减轻接入压力的同时,又能获得原生 SDK 最大的灵活性。