用友盟的组件实现分享内容到新浪微博,微信,朋友圈

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
2014年5月21日 星期三
//下面代码里,用友盟分享内容到微博的功能正常使用
//而分享内容到微信的功能  虽然toast提示分享成功,友盟后台统计分享次数也确实加上去了的,但是就是没见我的微信和朋友圈有新分享的内容,
//此部分尚未解决 
//如果使用微信官方sdk实现分享,参考      http://blog.csdn.net/freesonhp/article/details/10296141

2014年5月22日 星期四
已经可以实现微博,微信好友,微信朋友圈的分享功能了
记录我的奇葩苦逼经历
1. 用友盟实现分享内容到微博不难,下载好sdk,对着官方文档敲代码就行了,第一次分享会让用户点击授权

2. 关键是微信分享,首先要去微信开放平台注册并审核通过一个应用,拿到应用信息里的 appid,应用签名,包名
    我下载的友盟的演示项目的测试apk可以成功实现分享,但是我自己写的代码死活无法打开调用微信分享面板,出现   2014年5月21日 星期三 的情况
    后来发现是 因为  微信的分享需要服务器对  appid,应用签名,包名进行验证,而我没有之前配置好

3. appid审核通过就有的,直接写到代码里就行了,包名也就是我们代码所在的那个包 
    关键是应用签名,应用签名其实就是apk包的md5值,(签名证书什么的一直没搞懂,感觉对不起教了我三年的安全学老师)
    (1) 如果使用adt直接debug运行程序,可以在 Eclipse的Window->Preferences->Android->Build 里面看到应用的md5,
         (这是 Android 编译工具为我们准备好的,具体资料看http://www.cnblogs.com/xirihanlin/archive/2010/04/29/1724080.html)
         我们拿到md5后去掉冒号填进微信开放平台里就行了,然后debug的程序就可以运行了
    (2) 如果项目要正式导出apk,我们依然要拿到apk的md5值作为应用签名填进微信开放平台里
         这时候可以用jdk的keytool运行 我们导出apk时用到的keystore文件, 然后就可以看到 用该keystore生成的apk的md5了
         命令行大概是这样子:  (我的keystore命名为 asd.keystore
         e:
         cd Program Files\Java\jdk1.7.0_51\bin
         keytool -list -v -keystore asd.keystore
         输入keystore的密码 就可以看到md5




下面是具体操作:
//微博默认分享功能是让用户授权给友盟  而不是用我们在新浪注册的app id
1. http://dev.umeng.com/social/android/sdk-download 下载sdk,我写的是  umeng_android_social_sdk_3.3.8_custom.zip
//微博默认分享功能是让用户授权给友盟  而不是用我们在新浪注册的app id

2.把sdk里面的libs和res全部解压到项目文件夹里


   在项目的manifest文件里 添加相应信息
   我加了
   <activity
            android: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>
 
        <meta-data
            android:name="UMENG_APPKEY"
            android:value=" 你的友盟appid" >
        </meta-data>

        和一堆uses-permission

4.上代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test_umeng_share"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test_umeng_share.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        
        <activity
            android: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>
        

             
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="我的umeng  appid" >
        </meta-data>
        
        
    </application>

    

    <!-- ###################声明SDK使用的相关权限###################### -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <!-- 检测网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />     <!-- 获取mac地址作为用户的备用唯一标识 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />      <!-- 获取用户手机的IMEI,用来唯一的标识用户。 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 缓存资源优先存入SDcard -->
    <uses-permission android:name="android.permission.INTERNET" />              <!-- 允许应用程序联网,以便向我们的服务器端发送数据。 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  <!-- 用于评论模块分享位置信息 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 用于评论模块分享位置信息 -->
    
    
 
    
    
</manifest>




public class MainActivity extends Activity {
	
	public Button shareButton1,shareButton2,shareButton3,shareButton4;
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		shareButton1 = (Button)findViewById(R.id.button1);
		shareButton2 = (Button)findViewById(R.id.button2);
		shareButton3 = (Button)findViewById(R.id.button3);
		shareButton4 = (Button)findViewById(R.id.button4);
		
		initShareButtonListener();  //设置分享按钮的监听器

		

	}


	private void initShareButtonListener() {
		
		
		shareButton1.setOnClickListener( new OnClickListener() {
			@Override
			public void onClick(View arg0) {
			   startShare1();  //分享方式1
			}
		});
		
		
		shareButton2.setOnClickListener( new OnClickListener() {
			@Override
			public void onClick(View arg0) {
			   startShare2();  //分享方式2
			}
		});
		
		
		shareButton3.setOnClickListener( new OnClickListener() {
			@Override
			public void onClick(View arg0) {
			   startShare3();  //微信分享方式1 分享到微信好友
			}
		});
		
		
		shareButton4.setOnClickListener( new OnClickListener() {
			@Override
			public void onClick(View arg0) {
			   startShare4();  //微信分享方式2  分享到朋友圈
			}
		});
	}


	//这种分享方式 只会有toast提示,无法让用户编辑要分享的内容
	public void startShare1() {
		
		String share_string = "我是要被分享的字符串";
		String share_url_img = "http://www.umeng.com/images/pic/banner_module_social.png";  //分享的图片链接
		
		// 首先在您的Activity中添加如下成员变量
		/* 设置要分享的内容       这里的这种方式对大部分平台适用         还有一些另外的方式可以针对个别平台进行更细节的设定*/
		UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share", RequestType.SOCIAL);
		// 设置分享内容
	    mController.setShareContent(share_string);
		// 设置分享图片, 参数2为图片的url地址
		mController.setShareMedia(new UMImage(this, share_url_img));
		
		mController.directShare(this, SHARE_MEDIA.SINA,
	            new SnsPostListener() {

	            @Override
	            public void onStart() {
	                Toast.makeText(getApplicationContext(), "分享开始",Toast.LENGTH_SHORT).show();
	            }

	            @Override
	            public void onComplete(SHARE_MEDIA platform,int eCode, SocializeEntity entity) {
	                if(eCode == StatusCode.ST_CODE_SUCCESSED){
	                    Toast.makeText(getApplicationContext(), "分享成功",Toast.LENGTH_SHORT).show();
	                }else{
	                    Toast.makeText(getApplicationContext(), "分享失败",Toast.LENGTH_SHORT).show();
	                }
	            }
	    });
		
	}
	
	
	//提供一个编辑界面
	public void startShare2() {
		
		String share_string = "我是要被分享的字符串";
		String share_url_img = "http://www.umeng.com/images/pic/banner_module_social.png";  //分享的图片链接
		
		// 首先在您的Activity中添加如下成员变量
		/* 设置要分享的内容       这里的这种方式对大部分平台适用         还有一些另外的方式可以针对个别平台进行更细节的设定*/
		UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share", RequestType.SOCIAL);
		// 设置分享内容
	    mController.setShareContent(share_string);
		// 设置分享图片, 参数2为图片的url地址
		mController.setShareMedia(new UMImage(this, share_url_img));
		
		// 参数1为Context类型对象, 参数2为要分享到的目标平台, 参数3为分享操作的回调接口
		mController.postShare(this,SHARE_MEDIA.SINA, 
		        new SnsPostListener() {
		                @Override
		                public void onStart() {
		                    Toast.makeText(getApplicationContext(), "开始分享.", Toast.LENGTH_SHORT).show();
		                }

		                @Override
		                public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) {
		                     if (eCode == 200) {
		                         Toast.makeText(getApplicationContext(), "分享成功.", Toast.LENGTH_SHORT).show();
		                     } else {
		                          String eMsg = "";
		                          if (eCode == -101){
		                              eMsg = "没有授权";
		                          }
		                          Toast.makeText(getApplicationContext(), "分享失败[" + eCode + "] " + 
		                                             eMsg,Toast.LENGTH_SHORT).show();
		                     }
		              }
		});
		
	}
	
	//我这边微信分享的部分还没有实现 因为需要有一个审核通过的微信appid,虽然这里返回"分享成功",但是并没有分享出去
	//下面是微信的两种分享方式  把SHARE_MEDIA.SINA改为SHARE_MEDIA.WEIXIN,其他的平台也类似
	public void startShare3() {
		

		
		// 首先在您的Activity中添加如下成员变量
		/* 设置要分享的内容       这里的这种方式对大部分平台适用         还有一些另外的方式可以针对个别平台进行更细节的设定*/
		UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share", RequestType.SOCIAL);
	
		
		// wx123456789是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID
		String appID = "wx123456789";
		// 微信图文分享必须设置一个url 
		String contentUrl = "http://www.umeng.com/social";
		// 添加微信平台,参数1为当前Activity, 参数2为用户申请的AppID, 参数3为点击分享内容跳转到的目标url
		UMWXHandler wxHandler = mController.getConfig().supportWXPlatform(this,appID, contentUrl);
		wxHandler.setWXTitle("友盟社会化组件还不错...");
		
		
		WeiXinShareContent weixinContent = new WeiXinShareContent();
//		weixinContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,微信");
		weixinContent.setTitle("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,微信");
		weixinContent.setTargetUrl("http://www.umeng.com");
		 weixinContent.setShareImage(new UMImage(this, "http://www.umeng.com/images/pic/banner_module_social.png"));
		mController.setShareMedia(weixinContent);
		
		
		// 参数1为Context类型对象, 参数2为要分享到的目标平台, 参数3为分享操作的回调接口
		mController.postShare(this,SHARE_MEDIA.WEIXIN, new SnsPostListener() {
            @Override
            public void onStart() {
                Toast.makeText(getApplicationContext(), "开始分享.", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) {
                 if (eCode == 200) {
                     Toast.makeText(getApplicationContext(), "分享成功.", Toast.LENGTH_SHORT).show();
                 } else {
                      String eMsg = "";
                      if (eCode == -101){
                          eMsg = "没有授权";
                      }
                      Toast.makeText(getApplicationContext(), "分享失败[" + eCode + "] " + 
                                         eMsg,Toast.LENGTH_SHORT).show();
                 }
          }
		});

	}
	
	
	public void startShare4() {
		
		
		
		// 首先在您的Activity中添加如下成员变量
		/* 设置要分享的内容       这里的这种方式对大部分平台适用         还有一些另外的方式可以针对个别平台进行更细节的设定*/
		UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share", RequestType.SOCIAL);
		// wx123456789是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID
		String appID = "wx123456789";
		// 微信图文分享必须设置一个url 
		String contentUrl = "http://www.umeng.com/social";
		
		// 配置sdk
		UMWXHandler circleHandler = mController.getConfig().supportWXCirclePlatform(this,appID, contentUrl) ;
		circleHandler.setCircleTitle("友盟社会化组件还不错...");
		// 配置要分享的内容
		CircleShareContent circleMedia = new CircleShareContent(new UMImage(this,"http://www.umeng.com/images/pic/social/chart_1.png"));
		circleMedia.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,朋友圈");
		mController.setShareMedia(circleMedia);

				
		// 参数1为Context类型对象, 参数2为要分享到的目标平台, 参数3为分享操作的回调接口
		mController.postShare(this,SHARE_MEDIA.WEIXIN_CIRCLE, 
		        new SnsPostListener() {
		                @Override
		                public void onStart() {
		                    Toast.makeText(getApplicationContext(), "开始分享.", Toast.LENGTH_SHORT).show();
		                }

		                @Override
		                public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) {
		                     if (eCode == 200) {
		                         Toast.makeText(getApplicationContext(), "分享成功.", Toast.LENGTH_SHORT).show();
		                     } else {
		                          String eMsg = "";
		                          if (eCode == -101){
		                              eMsg = "没有授权";
		                          }
		                          Toast.makeText(getApplicationContext(), "分享失败[" + eCode + "] " + 
		                                             eMsg,Toast.LENGTH_SHORT).show();
		                     }
		              }
		});
	}
	
}


最终效果
     




搞了我两天,感觉再也不会爱了.........


asp实现微信JS-SDK分享朋友圈(自定义图标等)功能 用ASP程序实现手机网页,获取“分享朋友圈”按钮点击状态及自定义分享内容接口。通过asp实现以下数据:timestamp(时间戳)、access_token、jsapi_ticket、sha1加密、signature。 立即下载

相关推荐

ESP32小车DIY:从零搭建无线遥控智能车(附完整代码与避坑指南)

本文详细介绍了如何从零开始DIY一台基于ESP32的无线遥控智能小车。内容涵盖核心硬件选型、电路设计、低延迟ESP-NOW无线通信协议的配置与实战,以及双电机差速控制算法与PWM调速的实现。文章提供了完整的代码示例和关键的避坑指南,旨在帮助开发者快速构建稳定可靠的智能车平台,并为进一步的功能扩展奠定基础。

gamma的博客 423

用友第三方分享

在app开发的时候需要用到分享功能,利用友的第三方分享,可以大大的

mockingbirds的专栏 3487

Unity开源游戏源码精选:17个亲测可运行教学项目

Unity游戏开发中,掌握真实项目结构与工程实践远比熟记API更重要。本文围绕‘Unity开源项目’和‘游戏源码’两大核心概念,解析高质量开源资源的本质特征——结构清晰、逻辑可溯、修改即时反馈。从基础的MonoBehaviour生命周期组织,到进阶的ScriptableObject数据驱动、事件总线解耦,再到架构级的DOTS ECS设计与网络同步模式,技术价值在于将抽象原理落地为可调试、可验证、可迁移的代码范式。适用于新手建立开发直觉、中级开发者突破系统设计瓶颈,以及团队构建可维护框架。所有项目均基于Uni

weixin_31528001的博客 637

分享朋友圈,QQ,新浪微博的注意事项

1.http://dev.umeng.com/social/ios/detail-share 需要看分享的官方文档,倒入相关的库 2.步骤1. 添加URL scheme 3.去微信、QQ、新浪微博开发者平台申请相关的appid和appkey 4.http://www.umeng.com/apps/2604005609e85e76b38d0f55/sns_integration?rep

login_csdn的专栏 1632

用友SDK实现Android分享微信朋友圈

社会化分享是目前必学且火热的功能。之前有写第三方登录,那只是社会化分享的一部分。今天来玩玩分享微信朋友圈。    为了方便操作,还是按照步骤写。 一,注册    注册应用已经在这里详细说明过了,这里就不多提了。 二,在微信开放平台中授权开发者身份,以及注册应用    链接:https://open.weixin.qq.com/ 进入管理中心 提交个人(公司)资料注册开发者信息(需

toeii 3928

用友社会化组件分享微信新浪微博

最近做的APP,需要分享功能,于是试了一下的社会化组件。总的感觉还不错,虽然没有比直接集成官方SDK简便多少,但是后台统计的功能不错,所以最后还是用了。官网的文档说明已经挺详细了,不过章节组织得有点乱,本文总结一下 获取app key 首先去注册一个app key,然后下载它的SDK。这里要注意的是,SDK分为IDFA版和非IDFA版,前者需要设置一个默认的广告页,否则有可能被苹果

kyfxbl 2148

java微信分享朋友圈_java怎么实现微信分享朋友圈功能

展开全部申请应用 AppKey申请方法:访问推网站后台,登录后进入应用列表,添加需要集成组件的 App,如下636f70793231313335323631343130323136353331333363393666图,添加成功后可获取应用的 AppKey。如何把app分享微信2申请社交平台appkey集成前您需要为您的应用在各大社交网站的开放平台申请账号并通过审核,否则只能调用系统的分享...

weixin_42308697的博客 1100

社会化Android组件之第三方登录

前段时间公司需要,逐步了新浪微博、腾讯qq、微信等授权登录验证的问题。如果要一个个申请,看文档写代码也是很多流程的。干脆用友社会化Android组件之第三方登录。是集成了这些平台,还有其他主流的平台的。我在这里主要讲一下里面微博登录。先看看是怎么介绍自已的。 一、社会化分享介绍 社会化分享组件,帮助移动应用快速具备微信分享,微博分享、登录、评论、喜欢等社会化组件

ThunderRong的博客 1770

app分享功能开发

最近在开发一个社交平台的app需要用到分享功能,本来想自己开发的,在网上花了很长时间查了很多教程结果却不尽人意,无意中看到还有类似的开源组件推,结合自己的开发经验,把一些集成步骤和问题整理成文档奉献给大家,希望能帮助各位开发者提高开发效率。 集成步骤: 第一步: 进入推官网申请appkeyhttp://youtui.mobi/user/reg 第二步:...

afv94866的博客 800

【转载】 社会化Android组件之第三方登录

前段时间公司需要,逐步了新浪微博、腾讯qq、微信等授权登录验证的问题。如果要一个个申请,看文档写代码也是很多流程的。干脆用友社会化Android组件之第三方登录。是集成了这些平台,还有其他主流的平台的。我在这里主要讲一下里面微博登录。先看看是怎么介绍自已的。 一、社会化分享介绍 社会化分享组件,帮助移动应用快速具备微信分享,微博分享、登录、评论、喜欢等社会化组件

u010097616的专栏 586

Android 新浪微博分享

1.在清单文件中配置 uses-permission android:name="android.permission.INTERNET" /> uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> uses-permission android:name="android.permission.

yijiaodingqiankun的博客 2918

调用新浪微博分享问题处理

问题回顾:调用新浪微博分享时,如果用户安装了微博客户端则会卡在授权页面,没有安装则通过webview正常分享,授权前加了那句代码之后分享正常。 1.acctionsheet的话应该在这里进行授权 - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonInde

haijun_wong的专栏 1322

Android工作中遇到的问题:分享新浪微博内容被放入草稿箱

        项目工作中使用到了SDK6.42进行分享,但在测试分享新浪微博的功能时发现,分享虽然成功了,但分享内容却被新浪微博放进了草稿箱。        分享新浪微博代码:        ShareAction sa = new ShareAction(activity); UMWeb web = new UMWeb(shareUrl); web.setTitle(shareTitl...

lht80s的博客 1349

分享 之新浪分享注意事项

原帖:http://bbs.umeng.com/thread-5665-1-1.html 四个步骤: 1.添加需要的文件 确认工程src目录已添加'com/sina/sso/RemoteSSO.aidl',如果没有请将SDK包中src覆盖到项目工程。 2.配置sina SSO(免登录)开关//设置新浪SSO handlermController.getConfig(

JerryWu145的专栏 1326
上一篇: Android使用Gson和SharedPreferences存储对象
下一篇: Android界面——Button按钮的一些事
live4what
博客等级 码龄15年 24粉丝 105原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值