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

📅 2026/7/10 23:16:21
【2013-11-10】Android应用开发笔记:分享至微博及友盟的基本使用
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-11-10 标题Android应用开发笔记分享至微博及友盟的基本使用分类编程 / android 标签android·分享·友盟Android应用开发笔记分享至微博及友盟的基本使用1下载开发文档和注册账号获取KEY2将指定的res和libs拷入3修改AndroidManifestx.xml文件添加相关权限4页面和代码activity\_main.xmlMainActivity.javaShareUtil.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 】友盟的开发文档还是比较全的。KEY2将指定的res和libs拷入按照要求将指定的res和libs拷入工程。3修改AndroidManifestx.xml文件添加相关权限!-- ###################声明SDK使用的相关权限###################### --uses-permissionandroid:nameandroid.permission.ACCESS_NETWORK_STATE/!-- 检测网络状态 --uses-permissionandroid:nameandroid.permission.ACCESS_WIFI_STATE/!-- 获取mac地址作为用户的备用唯一标识 --uses-permissionandroid:nameandroid.permission.READ_PHONE_STATE/!-- 获取用户手机的IMEI用来唯一的标识用户。 --uses-permissionandroid:nameandroid.permission.WRITE_EXTERNAL_STORAGE/!-- 缓存资源优先存入SDcard --uses-permissionandroid:nameandroid.permission.INTERNET/!-- 允许应用程序联网以便向我们的服务器端发送数据。 --uses-permissionandroid:nameandroid.permission.ACCESS_FINE_LOCATION/!-- 用于评论模块分享位置信息 --uses-permissionandroid:nameandroid.permission.ACCESS_COARSE_LOCATION/!-- 用于评论模块分享位置信息 --applicationandroid:allowBackuptrueandroid:icondrawable/ic_launcherandroid:labelstring/app_nameandroid:themestyle/AppThemeactivityandroid:nameyeah.cstriker1407.android.share.MainActivityandroid:labelstring/app_nameintent-filteractionandroid:nameandroid.intent.action.MAIN/categoryandroid:nameandroid.intent.category.LAUNCHER//intent-filter/activity!-- ###################注册SDK使用的Activity###################### --!-- 分享编辑页 --activityandroid:namecom.umeng.socialize.view.ShareActivityandroid:configChangesorientation|keyboardandroid:launchModesingleTaskandroid:noHistorytrueandroid:themestyle/Theme.UMDialogandroid:windowSoftInputModestateVisible|adjustResize/activity!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ --activityandroid:namecom.tencent.tauth.AuthActivity/!-- ###################添加UmengAppkey###################### --meta-dataandroid:nameUMENG_APPKEYandroid:valueXXXX/meta-data/application4页面和代码activity_main.xmlEditTextandroid:idid/editTextandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:ems10requestFocus//EditTextButtonandroid:idid/button1android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text选择发送平台/Buttonandroid:idid/button2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text修改后发送新浪微博/Buttonandroid:idid/button3android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text直接发送新浪微博/Buttonandroid:idid/button4android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text本地是否认证/Buttonandroid:idid/button5android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text删除本地认证/Buttonandroid:idid/button6android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text新浪认证/Buttonandroid:idid/button7android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textandroid默认/MainActivity.javapublicclassMainActivityextendsActivityimplementsOnClickListener{privateEditTexteditText;privateButtonbutton1;privateButtonbutton2;privateButtonbutton3;privateButtonbutton4;privateButtonbutton5;privateButtonbutton6;privateButtonbutton7;finalUMSocialServicemControllerUMServiceFactory.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(eCode200){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(eCodeStatusCode.ST_CODE_SUCCESSED){Toast.makeText(MainActivity.this,分享成功,Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this,分享失败,Toast.LENGTH_SHORT).show();}}});break;}caseR.id.button4:{booleanisSinaOauthHelper.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();}});booleanisSinaOauthHelper.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();//获取相关授权信息或者跳转到自定义的分享编辑页面Stringuidvalue.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.javapublicclassShareUtil{publicstaticbooleansimpleShare(Contextcontext,Stringtext,StringImagePath){if(nulltext||text.trim().length()0){returnfalse;}IntentintentnewIntent(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!nullImagePath.trim().length()!0){FilefilenewFile(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。