[历史归档]本文原发布于 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。