友盟分享实例( 一)——在activity中的应用

    前段日子做了一个新闻类的应用,作为一个新闻类的应用,分享是必不可少的一个功能,也就是我们经常看到的熟悉的页面:

                    

    由于自己是初次接触,很多的东西都不是很明白,如今回头看看,真的没有很多的东西!由于是基于第三方做的一些开发,所以我们需要做的也就是按照规范直接调用即可!说归说,但是在实践的过程中还是会遇到各种各样的问题,接下来就将自己在过程中遇到的问题以及需要注意的点分享给大家,希望可以帮助到刚刚接触到这一块技术的亲们!

一、各种平台账号的注册

    友盟官网注册自己的账号、微信开放平台注册自己的账号、qq互联注册自己的账号(这个可以和自己的PM要一下),这个在后边的代码中会使用得到,而且是你的应用的唯一标示,接下来就需要按照官方文档上的提示一步步去实现了。

**注意:这里注册的账号一定要根据自己的实际情况对应,如果自己做的是移动应用就注册移动应用、如果是网站应用即注册网站应用!

二、SDK导入和调用

    友盟官方提供了三种导入SDK的方法,如果你是第一次接触这个,推荐使用快速集成的方案,这样可以减少不少的麻烦,想要实现什么平台的分享就对应勾选起来即可。例如只做qq和微信的分享,只需要勾选相应的平台和自己需要的资料即可!(如果是初次接触,建议将文档及工程demo都下载下来,方便自己的学习)



再接下来就是配置文件中权限的配置,

 <!-- QQ、QQ空间所需权限 -->
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

        <!-- 微信回调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" />

        <!-- ############ 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="tencent1104805317" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" >
        </activity>

        <!-- 友盟APPID -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="55ecf150e0f55a537400042f" >
        </meta-data>
    </application>

    <!-- ###################声明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" />
    <!-- QQ、QQ空间所需权限 -->
    <uses-permission android:name="android.permission.GET_TASKS" />

注:这里的配置主要是对各个平台的权限配置和友盟APPID的配置

 <!-- 友盟APPID -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="55ecf150e0f55a537400042f" >
        </meta-data>

最后就是在自己的activity中实现友盟控制器的使用。

1.声明分享控制器

final UMSocialService mController = UMServiceFactory
			.getUMSocialService("com.umeng.share");
2.在onCreate方法中添加各个分享平台

// 添加微信平台到SDK
		UMWXHandler wxHandler = new UMWXHandler(PictureViewInfoActivity.this,
				"wxd4d271556de359af", "55958b52d9760b0e9ae763ecc380d198");
		wxHandler.addToSocialSDK();

		// 添加微信朋友圈平台到SDK
		UMWXHandler wxCicleHandler = new UMWXHandler(
				PictureViewInfoActivity.this, "wxd4d271556de359af",
				"55958b52d9760b0e9ae763ecc380d198");
		wxCicleHandler.setToCircle(true);
		wxCicleHandler.addToSocialSDK();

		// 添加qq到SDK,参数1为当前Activity,参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.
		UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(
				PictureViewInfoActivity.this, "1104805317", "gvdED7aW06yaigv7");
		qqSsoHandler.addToSocialSDK();

		// 添加qq空间平台到SDK
		QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(
				PictureViewInfoActivity.this, "1104805317", "gvdED7aW06yaigv7");
		qZoneSsoHandler.addToSocialSDK();

		// 去除人人网、豆瓣网、腾讯微博、新浪微博的分享
		mController.getConfig().removePlatform(SHARE_MEDIA.RENREN,
				SHARE_MEDIA.DOUBAN, SHARE_MEDIA.SINA, SHARE_MEDIA.TENCENT);
3.打开分享面板;

share = (LinearLayout) findViewById(R.id.picView_Share);
		share.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				mController.openShare(PictureViewInfoActivity.this, false);
			}
		});

4.设置分享内容;

// 设置分享内容
				try {

					/*-------------------------设置微信好友分享内容-------------------*/
					WeiXinShareContent weixinContent = new WeiXinShareContent();
					// 设置分享文字
					weixinContent.setShareContent(pictureViewInfo.get(0)
							.getTitle());
					// 设置title
					weixinContent.setTitle("来自***的分享");
					// 设置分享内容跳转URL
					weixinContent.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					// 设置分享图片
					weixinContent.setShareImage(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					mController.setShareMedia(weixinContent);

					/*-------------------------设置微信朋友圈分享内容----------------------------*/
					CircleShareContent circleMedia = new CircleShareContent();
					circleMedia.setShareContent("*******!");
					circleMedia.setTitle("来自***的分享" + " | "
							+ pictureViewInfo.get(0).getTitle());
					circleMedia.setShareMedia(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					circleMedia.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					mController.setShareMedia(circleMedia);

					/*--------------------------------qq-----------------------------*/
					QQShareContent qqShareContent = new QQShareContent();
					// 设置分享文字
					qqShareContent.setShareContent(pictureViewInfo.get(0)
							.getTitle());
					// 设置分享title
					qqShareContent.setTitle("来自***的分享");
					// 设置分享图片
					qqShareContent.setShareImage(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					// 设置点击分享内容的跳转链接
					qqShareContent.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					mController.setShareMedia(qqShareContent);

					/*--------------------------------qq空间-----------------------------*/
					QZoneShareContent qzone = new QZoneShareContent();
					// 设置分享文字
					qzone.setShareContent(pictureViewInfo.get(0).getTitle());

					// 设置分享内容的标题
					qzone.setTitle("来自***的分享");

					// 设置分享图片
					qzone.setShareImage(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					// 设置点击消息的跳转URL
					qzone.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					mController.setShareMedia(qzone);

					// mController
					// .setShareContent(pictureViewInfo.get(0).getTitle()
					// +
					// "http://123.56.114.148:8082/CheDuanZi/api/json!share.do?articleId="
					// + pictureViewInfo.get(0).getUid());
					// // 设置分享图片
					// mController.setShareMedia(new UMImage(
					// PictureViewInfoActivity.this,
					// "http://123.56.114.148:8082/CheDuanZi/statics"
					// + pictureViewInfo.get(0).getPath()));
					// 设置点击分享内容的跳转链接
					// qqShareContent
					// .setTargetUrl("http://123.56.114.148:8082/CheDuanZi/api/json!share.do?articleId=100");
					// mController.setShareMedia(qqShareContent);
				} catch (Exception e) {
					// TODO: handle exception
				}
    需要注意的是分享内容必须设置setTargetUrl()和setShareContent(),这里只列出了qq好友、空间和微信好友、朋友圈的分享,其他平台的分享内容的设置以此类推!

    一切就绪之后,还需要提醒的是微信分享功能的测试是需要打包测试的,很多人就是因为不知道这一点而发愁了半天也不能实现;如果需要调试qq分享的话可以在互联平台上填写自己的调试qq号码,供自己调试使用,和打包测试相比很是方便!

    最后提示一下大家,尽可能在官网上找资料,网络上查到的东西尽管很多,但是他的真实性无法保证!就拿自己在设置微信分享的APPID和APPSecret时,网上有资料说是用打包时的MD5码和SH1码,

                  

但事实证明这个是不对的,正确的答案是微信开发平台上得到的APPID和APPSecret;

    克服自己内心的抵触、恐惧心理,相信大家一定可以做到!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章