当前位置: 首页 > news >正文

【2013-11-10】Android应用开发笔记:分享至微博及友盟的基本使用

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2013-11-10| 标题:Android应用开发笔记:分享至微博及友盟的基本使用分类:编程 / android |标签:android·分享·友盟


Android应用开发笔记:分享至微博及友盟的基本使用

    • 1)下载开发文档和注册账号,获取KEY
    • 2)将指定的res和libs拷入
    • 3)修改AndroidManifestx.xml文件,添加相关权限
    • 4)页面和代码
      • activity\_main.xml
      • MainActivity.java
      • ShareUtil.java
    • 备注:

android程序如果要分享到微博之类的社交平台,一般有两种选择,第一种是进入各个平台的开发网站,下载并整合该平台的API,这种比较繁琐,一般都有种种限制,而且API提供的接口我们往往只用很少的几个。第二种是使用大公司二次整合的API,这里备份下友盟社会化分享组件的基本使用。

github:

【 https://github.com/cstriker1407/android/tree/master/HelloWeibo 】

1)下载开发文档和注册账号,获取KEY

友盟社会化组件开发文档【 http://dev.umeng.com/social/android/share/specific-integration 】

友盟的开发文档还是比较全的。

KEY:

2)将指定的res和libs拷入

按照要求将指定的res和libs拷入工程。

3)修改AndroidManifestx.xml文件,添加相关权限

<!-- ###################声明SDK使用的相关权限###################### --><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><!-- 检测网络状态 --><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><!-- 获取mac地址作为用户的备用唯一标识 --><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/><!-- 获取用户手机的IMEI,用来唯一的标识用户。 --><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 缓存资源优先存入SDcard --><uses-permissionandroid:name="android.permission.INTERNET"/><!-- 允许应用程序联网,以便向我们的服务器端发送数据。 --><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><!-- 用于评论模块分享位置信息 --><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- 用于评论模块分享位置信息 --><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name="yeah.cstriker1407.android.share.MainActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><!-- ###################注册SDK使用的Activity###################### --><!-- 分享编辑页 --><activityandroid:name="com.umeng.socialize.view.ShareActivity"android:configChanges="orientation|keyboard"android:launchMode="singleTask"android:noHistory="true"android:theme="@style/Theme.UMDialog"android:windowSoftInputMode="stateVisible|adjustResize"></activity><!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ --><activityandroid:name="com.tencent.tauth.AuthActivity"/><!-- ###################添加UmengAppkey###################### --><meta-dataandroid:name="UMENG_APPKEY"android:value="XXXX"></meta-data></application>

4)页面和代码

activity_main.xml

<EditTextandroid:id="@+id/editText"android:layout_width="match_parent"android:layout_height="wrap_content"android:ems="10"><requestFocus/></EditText><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择发送平台"/><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="修改后发送新浪微博"/><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="直接发送新浪微博"/><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="本地是否认证"/><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="删除本地认证"/><Buttonandroid:id="@+id/button6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="新浪认证"/><Buttonandroid:id="@+id/button7"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="android默认"/>

MainActivity.java

publicclassMainActivityextendsActivityimplementsOnClickListener{privateEditTexteditText;privateButtonbutton1;privateButtonbutton2;privateButtonbutton3;privateButtonbutton4;privateButtonbutton5;privateButtonbutton6;privateButtonbutton7;finalUMSocialServicemController=UMServiceFactory.getUMSocialService("com.umeng.share",RequestType.SOCIAL);@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText=(EditText)findViewById(R.id.editText);button1=(Button)findViewById(R.id.button1);button2=(Button)findViewById(R.id.button2);button3=(Button)findViewById(R.id.button3);button4=(Button)findViewById(R.id.button4);button5=(Button)findViewById(R.id.button5);button6=(Button)findViewById(R.id.button6);button7=(Button)findViewById(R.id.button7);button1.setOnClickListener(this);button2.setOnClickListener(this);button3.setOnClickListener(this);button4.setOnClickListener(this);button5.setOnClickListener(this);button6.setOnClickListener(this);button7.setOnClickListener(this);}@OverridepublicvoidonClick(Viewv){switch(v.getId()){caseR.id.button1:{// 设置分享内容mController.setShareContent(editText.getText().toString());// 设置分享图片, 参数2为图片的地址mController.setShareMedia(newUMImage(this,"http://www.umeng.com/images/pic/banner_module_social.png"));//设置分享图片,参数2为本地图片的资源引用//mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));//设置分享图片,参数2为本地图片的路径(绝对路径)//mController.setShareMedia(new UMImage(getActivity(),// BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));// 设置分享平台选择面板的平台显示顺序// mController.getConfig().setPlatformOrder(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,// SHARE_MEDIA.QZONE,SHARE_MEDIA.QQ, SHARE_MEDIA.SINA);// 打开平台选择面板,参数2为打开分享面板时是否强制登录,false为不强制登录mController.openShare(this,false);break;}caseR.id.button2:{// 设置分享内容mController.setShareContent(editText.getText().toString());mController.postShare(MainActivity.this,SHARE_MEDIA.SINA,newSnsPostListener(){@OverridepublicvoidonStart(){Toast.makeText(MainActivity.this,"开始分享.",Toast.LENGTH_SHORT).show();}@OverridepublicvoidonComplete(SHARE_MEDIAplatform,inteCode,SocializeEntityentity){if(eCode==200){Toast.makeText(MainActivity.this,"分享成功.",Toast.LENGTH_SHORT).show();}else{StringeMsg="";if(eCode==-101){eMsg="没有授权";}Toast.makeText(MainActivity.this,"分享失败["+eCode+"] "+eMsg,Toast.LENGTH_SHORT).show();}}});break;}caseR.id.button3:{// 设置分享内容mController.setShareContent(editText.getText().toString());mController.directShare(MainActivity.this,SHARE_MEDIA.SINA,newSnsPostListener(){@OverridepublicvoidonStart(){Toast.makeText(MainActivity.this,"分享开始",Toast.LENGTH_SHORT).show();}@OverridepublicvoidonComplete(SHARE_MEDIAplatform,inteCode,SocializeEntityentity){if(eCode==StatusCode.ST_CODE_SUCCESSED){Toast.makeText(MainActivity.this,"分享成功",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this,"分享失败",Toast.LENGTH_SHORT).show();}}});break;}caseR.id.button4:{booleanisSina=OauthHelper.isAuthenticated(this,SHARE_MEDIA.SINA);Toast.makeText(this,"Sina:"+Boolean.toString(isSina),Toast.LENGTH_SHORT).show();break;}caseR.id.button5:{// OauthHelper.remove(this, SHARE_MEDIA.SINA);mController.deleteOauth(this,SHARE_MEDIA.SINA,newSocializeClientListener(){@OverridepublicvoidonStart(){Toast.makeText(MainActivity.this,"on start",Toast.LENGTH_SHORT).show();}@OverridepublicvoidonComplete(intarg0,SocializeEntityarg1){Toast.makeText(MainActivity.this,"on complete",Toast.LENGTH_SHORT).show();}});booleanisSina=OauthHelper.isAuthenticated(this,SHARE_MEDIA.SINA);Toast.makeText(this,"Sina:"+Boolean.toString(isSina),Toast.LENGTH_SHORT).show();break;}caseR.id.button6:{mController.doOauthVerify(this,SHARE_MEDIA.SINA,newUMAuthListener(){@OverridepublicvoidonStart(SHARE_MEDIAplatform){Toast.makeText(MainActivity.this,"授权开始",Toast.LENGTH_SHORT).show();}@OverridepublicvoidonError(SocializeExceptione,SHARE_MEDIAplatform){Toast.makeText(MainActivity.this,"授权错误",Toast.LENGTH_SHORT).show();}@OverridepublicvoidonComplete(Bundlevalue,SHARE_MEDIAplatform){Toast.makeText(MainActivity.this,"授权完成",Toast.LENGTH_SHORT).show();//获取相关授权信息或者跳转到自定义的分享编辑页面Stringuid=value.getString("uid");}@OverridepublicvoidonCancel(SHARE_MEDIAplatform){Toast.makeText(MainActivity.this,"授权取消",Toast.LENGTH_SHORT).show();}});break;}caseR.id.button7:{ShareUtil.simpleShare(this,editText.getText().toString(),null);}default:break;}}

ShareUtil.java

publicclassShareUtil{publicstaticbooleansimpleShare(Contextcontext,Stringtext,StringImagePath){if(null==text||text.trim().length()==0){returnfalse;}Intentintent=newIntent(Intent.ACTION_SEND);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.putExtra(Intent.EXTRA_SUBJECT,"share");intent.putExtra(Intent.EXTRA_TITLE,"title");intent.putExtra(Intent.EXTRA_TEXT,text);intent.setType("text/plain");if(ImagePath!=null&&ImagePath.trim().length()!=0){Filefile=newFile(ImagePath.trim());if(file.canRead()){intent.setType("image/*");intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));}}context.startActivity(intent);returntrue;// context.startActivity(Intent.createChooser(intent, "请选择"));}}

备注:

1)友盟的社会化分享SDK提供的接口很易于使用,更高级的操作可以参考友盟的API。

http://www.cnnetsun.cn/news/3273425.html

相关文章:

  • 2026 年 EDI 许可证办理服务商筛选指南:评测维度与机构能力分层对比
  • WVP-GB28181-Pro语音对讲功能深度解析与部署优化实践
  • 第一章Netty, NIO基础
  • 给 AI 长出一件新本事——插件不用敲,是聊出来的
  • SpringCloud服务治理实践
  • 拿来即用!C#上位机实现PLC远程控制:Modbus TCP协议+网口通信全解析
  • Istio EnvoyFilter 的高级用法:不该改的地方别手贱
  • 《唤醒你的AI同事:WorkBuddy从零上手》007:初始配置向导
  • 生猪接产智能产房监控 QT信创完整工程
  • 2000-2025年上市公司、地级市国家级“东数西算”工程政策试点DID数据
  • UVa 642 Word Amalgamation
  • Linux之进程(六)--环境变量
  • 单 RGB 摄像头实现复杂环境导航!Robostral Navigate 成功率达 76.6%
  • 【LeetCode 手撕算法】(细节知识点总结)
  • 如何构建自进化企业级 Agent 平台
  • 浏览器自动化_agent-browser
  • OpenClaw基础学习
  • 2026年房地产动画行业观察
  • 前端 CDN 缓存策略调优:静态资源、HTML 与 API 分层设计
  • The Impact of Image Resolution on Biomedical Multimodal Large Language Models
  • 【第008篇】通过dexp和dimp命令导出和导入dmp文件(适用于达梦数据库)
  • 香港虚拟资产双轨监管观察:从 MSO 到 VA OTC 的制度演变
  • 三星AI眼镜Galaxy Glasses技术解析:1200万像素摄像头与光致变色镜片的开发实践
  • Claude Code 100个真实案例 - 用AI搭建爬虫数据采集平台(自动翻页+反反爬)
  • 郑州城市职业学院参编清华教材背后的育人突围之路
  • 【Ambari Plus】15.Livy 安装
  • AI 接手一个项目之前,先给它一张可验证的上下文包
  • hive 学习笔记5——hive常用操作(日常短篇练习应用)
  • Claude Code 高级玩法:工作流编排、Token 优化与团队协作
  • M365 Copilot数据访问边界管控实战:基于Microsoft Purview的DSPM落地