Android 友盟分享,让你后顾无忧,麻麻再也不用担心我的学习。

咱们上回书说道:不用微信SDK也能分享。  

Android 微信分享,无需那么麻烦。

这次写友盟分享一个是避免微信新版本改动过大,可能导致无法做到Intent跳转界面的分享实现,还有就是不能局限于一个微信嘛。区区微信何足挂齿,我们不要放弃整片森林。(其实我就是懒。)
吾日三黑吾肾,不光自黑,还他黑,被迫他黑,被迫自黑。于是乎,我总结了一点。善于自黑者,必有其过人心智,长久锻炼,心若磐石,体如金刚。黑的久了,总结起来一句话,那是小母牛过独木桥,牛B一个接一个的。
黑言少叙,言归正状!!
首先,友盟分享的准备工作。注册一个友盟账号,会得到一个appkey,这个可以多个应用之间通用。具体的我就不细说了。所谓key,就是钥匙,开启分享大门的钥匙。
其次,下载SDK。SDK里的内容,视使用情况而定。借鉴与公司强大的网速。我全下下来了,嘿嘿。不过也不大。
然后是正式的开发工作。
开发时,我经常忘记给应用配置权限。所以需要什么权限,我从来都不吝啬,能想到的全部一股脑的放上去。用不用的着再说。哈哈。
    <!-- 检测网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 获取mac地址作为用户的备用唯一标识 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 获取用户手机的IMEI,用来唯一的标识用户 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 缓存资源优先存入SDcard -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 允许应用程序联网,以便向我们的服务器端发送数据 -->
    <uses-permission android:name="android.permission.INTERNET" />

权限我有,天下我走。
那接下来就是研究研究者友盟的API了。(以下内容全是原创,如有跟友盟雷同,那是我复制的原创)
<!-- ###################添加UmengAppkey###################### -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="xxxxxxxxxxxxxxxxxxxxxx" >
        </meta-data>
在清单文件的application节点里,加上这个数据单元xxxxxxx的内容就是友盟中创建应用的appkey。
为了方便应用的调试,在程序入口处加入com.umeng.socialize.utils.Log.LOG = true;
接下来,开始分享步骤的开发。这里是用了友盟默认的分享界面。
分享,就要有分享的内容。需要有个容器来装载内容和控制。
//初始化分享服务控制类
		mController = UMServiceFactory.getUMSocialService("com.umeng.share");
		// 设置分享内容
		mController
				.setShareContent("你是我的小苹果,有好东西要分享,http://www.umeng.com/social");
		// 设置分享图片, 参数2为图片的url地址
		mController.setShareMedia(new UMImage(context,"http://www.baidu.com/img/bdlogo.png"));
有了分享内容,接下来就是选择分享的应用。友盟默认实现了新浪微博,腾讯微博,人人网,豆瓣网的分享。一句话就搞定了。
mController.getConfig().<span style="font-family: Monaco; font-size: 14px;">setPlatforms</span>( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN,SHARE_MEDIA.TENCENT,SHARE_MEDIA.SINA);
需求往往不止这些,接下来实现其他的分享。要分享就要有分享的对象,上面之所以一句话搞定四个分享,一因为对应的对象已经默认实现了。所以这里我们要自己实现。 注意,实现分享对象,一定要再 setPlatforms设置分享控件之前实现。否则的话,你先把控件显示了,activity却发现还没有对应的对象,即对象为null。则不会显示在分享按钮界面上。
                // 添加SMS
		SmsHandler smsHandler = new SmsHandler();
		smsHandler.addToSocialSDK();
		// 添加email
		EmailHandler emailHandler = new EmailHandler();
		emailHandler.addToSocialSDK();
		// 添加有道云笔记平台
		UMYNoteHandler yNoteHandler = new UMYNoteHandler(this);
		yNoteHandler.addToSocialSDK();
		// 添加易信平台,参数1为当前activity, 参数2为在易信开放平台申请到的app id
		UMYXHandler yixinHandler = new UMYXHandler(this,
				"yxc0614e80c9304c11b0391514d09f13bf");
		// 关闭分享时的等待Dialog
		yixinHandler.enableLoadingDialog(false);
		// 把易信添加到SDK中
		yixinHandler.addToSocialSDK();

		// 易信朋友圈平台,参数1为当前activity, 参数2为在易信开放平台申请到的app id
		UMYXHandler yxCircleHandler = new UMYXHandler(this,
				"yxc0614e80c9304c11b0391514d09f13bf");
		yxCircleHandler.setToCircle(true);
		yxCircleHandler.addToSocialSDK();
然后 设置分享对象显示在分享界面上
mController.getConfig().setPlatforms(SHARE_MEDIA.EMAIL,
				SHARE_MEDIA.SMS, SHARE_MEDIA.YNOTE,SHARE_MEDIA.DOUBAN,
				SHARE_MEDIA.RENREN, SHARE_MEDIA.SINA,
				SHARE_MEDIA.YIXIN,SHARE_MEDIA.YIXIN_CIRCLE);
设置OK,开启分享功能
mController.openShare(this, false);
第一个参数是上下文context。false没搞懂。我想应该是是否自动授权一类的。
这样界面就华丽丽的展现了。虽然区区微信何足挂齿,奈何用户多呀,曾经的曾经,直到现在,也是神器一枚。可惜我直到现在,也没有有效的发挥这个神器的隐藏属性,还望哪位大虾不吝赐教。
增加微信和QQ的分享功能前,我建议先去微信和QQ开发者官网看看分享相关的知识,这样有助于理解。就因为之前搞了微信,所以接下来的过程我秒懂了。哈哈。葵花宝典,果然名不虚传。
//微信分享 wx967daebe835fbeac是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID
		String appID = "wxd930ea5d5a258f4f";
		String appSecret = "5fa9e68ca3970e87a1f83e563c8dcbce";
		// 添加微信平台
		UMWXHandler wxHandler = new UMWXHandler(this,appID,appSecret);
		wxHandler.addToSocialSDK();
		// 添加微信朋友圈
		UMWXHandler wxCircleHandler = new UMWXHandler(this,appID,appSecret);
		wxCircleHandler.setToCircle(true);
		wxCircleHandler.addToSocialSDK();
		
		//设置微信好友分享内容
		WeiXinShareContent weixinContent = new WeiXinShareContent();
		//设置title
		weixinContent.setTitle("友盟社会化分享组件-微信");
		//设置分享内容跳转URL
		weixinContent.setTargetUrl("你的URL链接");
		//设置分享图片
//		weixinContent.setShareImage(localImage);
		mController.setShareMedia(weixinContent);
		//设置微信朋友圈分享内容
		CircleShareContent circleMedia = new CircleShareContent();
//		circleMedia.setShareImage(localImage);
		circleMedia.setTargetUrl("你的URL链接");
		mController.setShareMedia(circleMedia);
		
		//参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.
		UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(this, "100424468",
		                "c7394704798a158208a74ab60104f0ba");
		qqSsoHandler.addToSocialSDK(); 
		//参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.
		QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(this, "100424468",
		                "c7394704798a158208a74ab60104f0ba");
		qZoneSsoHandler.addToSocialSDK();
		
		//设置QQ分享内容使用下面的代码:

		QQShareContent qqShareContent = new QQShareContent();
		//设置分享文字
		qqShareContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能 -- QQ");
		//设置分享title
		qqShareContent.setTitle("hello, title");
		//设置分享图片
		qqShareContent.setShareImage(new UMImage(this, R.drawable.abc_ab_bottom_solid_dark_holo));
		//设置点击分享内容的跳转链接
		qqShareContent.setTargetUrl("你的URL链接");
		mController.setShareMedia(qqShareContent);


		//设置Qzone分享内容

		QZoneShareContent qzone = new QZoneShareContent();
		//设置分享文字
		qzone.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能 -- QZone");
		//设置点击消息的跳转URL
		qzone.setTargetUrl("你的URL链接");
		//设置分享内容的标题
		qzone.setTitle("QZone title");
		//设置分享图片
		qzone.setShareImage(new UMImage(this, R.drawable.abc_ab_bottom_solid_dark_holo));
		mController.setShareMedia(qzone);
		
		mController.getConfig().setPlatforms(SHARE_MEDIA.EMAIL,
				SHARE_MEDIA.SMS, SHARE_MEDIA.YNOTE, SHARE_MEDIA.WEIXIN,
				SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.FACEBOOK,
				SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.DOUBAN,
				SHARE_MEDIA.RENREN, SHARE_MEDIA.SINA, SHARE_MEDIA.TENCENT,
				SHARE_MEDIA.YIXIN,SHARE_MEDIA.YIXIN_CIRCLE);
这里的APPid要改成自己的。不然微信无法分享,QQ可能会出问题。不过我没改,微信不能分享,QQ没问题。
开启分享

mController.openShare(this,false);

接下来清单文件要加上对应微信和QQ的响应界面。
<!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ -->
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- 100424468,如果你使用的公用账号,则不需要修改;否则修改成你在QQ开放平台申请的 APP ID-->
                <data android:scheme="tencent100424468" /> 
            </intent-filter>
        </activity>
        <activity android:name="com.tencent.connect.common.AssistActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:screenOrientation="portrait">
        </activity>
        <!-- 微信回调界面 -->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- 分享编辑页 -->
        <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>

当然,友盟SDK中得各种支持JAR包和res文件的内容也要一个不能少的添加到工程里。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值