您的位置:首页 > 移动开发 > Android开发

Android 一键分享功能开发教程

2014-09-11 16:03 393 查看
  
        最近在开发一个社交平台的app需要用到分享功能,本来想自己开发的,在网上花了很长时间查了很多教程结果却不尽人意,无意中看到还有类似的开源组件友推,可以实现Android 一键分享功能。结合自己的开发经验,把一些集成步骤和问题整理成文档奉献给大家,希望能帮助各位开发者提高开发效率。

集成步骤:

第一步:


进入友推官网申请appkey

第二步:

下载最新版的友推sdk包,包里提供了集成demo。

第三步:

    集成前您需要为您的应用在需要集成的社交网站开放平台申请账号(一般一个工作日可完成审核),否则只能调用系统的分享菜单,无法跟踪分享的回调事件及统计。详情可以看申请社交平台appkey教程
第四步:

1.引用友推库项目-> 2.注册需要分享的平台 -> 3.AndroidManifest.xml注册权限、activity ->4.初始化友推并调用

4.1 引用友推库项目

将youtui-lib项目库和应用工程放在同一个目录下,在 Package Explorer 中右键点击工程的根目录,选择 Properties(属性),然后点击,在Android选项点击Add添加youtui-lib。

4.2注册需要分享的平台

    1.配置各分享平台key,该配置文件为youtui_sdk.xml,配置完放入工程的assets文件夹。

    2.如果需要分享到哪个平台就将该平台的Enable属性设置为true.

    3.如果需要将某个平台排列到前面,只需要改变它在youtui_sdk.xml文件中的位置即可。

各平台需要注意的事项:

新浪微博:

SSO免登,新浪微博需要验证应用签名,请一定要在新浪开放平台管理中心应用信息 -> 基本信息 -> Android签名包名信息 配置该信息

每次包名变化或者使用的.keystore变化都会导致应用签名变化,请重新到新浪微博开放平台设置。

运行Demo时如果重新编译,因为使用的.keystore文件变化也会导致应用签名变化,导致Demo新浪微博分享无法正常工作,请运行Demo时使用Demo工程包中提供的debug.keystore替换C:\Users\Administrator\.android中的debug.keystore文件

微信和朋友圈:

微信和朋友圈也需要验证应用签名,请在微信开放平台管理中心修改应用 -> 开发信息配置。

QQ和QQ空间:

QQ和QQ空间使用的是腾讯开放平台api,请在腾讯开放平台申请账号和注册应用,请不要使用QQ互联(用于网站账号登录)的配置,虽然都是腾讯的,但是两个平台并不通用,除了需要在youtui_sdk.xml配置信息,还需要在manifest文件中的android:scheme中的tencent后的一串数字换成自己应用的appid。

<?xml version="1.0" encoding="utf-8"?>
<KeyInfo>
<!-- 分享平台的注册信息,一定要填入在相应平台注册的正确信息,不然应用无法完成授权,  也无法进行分享,enable填写true或者false属性决定是否分享该平台-->
<!-- 友推sdk注册地址 : http://youtui.mobi/ -->
<YouTui AppKey="" />

<!-- 微信和朋友圈注册:https://open.weixin.qq.com/ -->
<Wechat AppId="" Enable="" />
<WechatMoments AppId="" Enable="" />

<!-- 新浪微博注册地址:http://open.weibo.com/ -->
<!-- IsNoKeyShare属性,如果开发者没有新浪微博的key但是希望能使用新浪微博的分享功能,可以将IsNoKeyShare设置为true,这样就不需要设置AppKey,AppSecret,RedirectUrl而是使用友推默认的新浪注册信息 -->
<!-- IsWebShare设置为true则使用web分享而不是使用默认的调用新浪微博客户端进行分享,有用户在小米等机型下调用新浪微博客户端进行分享时无法获得授权,这样的话请使用web方式进行分享 -->
<SinaWeibo IsNoKeyShare="" IsWebShare="" AppKey="" AppSecret="" Enable="" RedirectUrl="" />

<!-- QQ,QQ空间,腾讯微博注册地址:http://open.qq.com/ -->
<QQ AppId="" AppKey="" Enable="" />
<QZone AppId="" AppKey="" Enable="" />
<!-- 腾讯微博注册地址:http://dev.t.qq.com/ -->
<!-- IsNoKeyShare属性,如果开发者没有腾讯微博的key但是希望能使用腾讯微博的分享功能,可以将IsNoKeyShare设置为true,这样就不需要设置AppKey,AppSecret,RedirectUrl而是使用友推默认的腾讯微博注册信息 -->
<TencentWeibo IsNoKeyShare="" AppKey="" AppSecret="" Enable="" RedirectUrl="" />

<!-- 人人注册地址: http://dev.renren.com/ -->
<Renren AppKey="" AppId="" Enable="" SecretKey="" />
<ShortMessage Enable="" />
<Email Enable="" />
<!-- 复制链接 -->
<CopyLink Enable="true"/>
<!-- 调用系统分享,适用于暂时没有申请到key的分享,该分享不会获得积分,也不会被统计到 -->
<More Enable="true"/>
</KeyInfo>

最后一行配置说明:选用调用系统分享菜单功能

4.3 在AndroidManifest.xml 注册权限

<!-- 检测网络状态 -->
<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" />

<!--打开关闭sd卡权限--!>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

<!--网络权限--!>
<uses-permission android:name="android.permission.INTERNET" />

<!-- 用于读取sd卡图片 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!-- 用于人人SSO登陆 -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

<!-- 用于人人SSO登陆 -->
<uses-permission android:name="android.permission.USE_CREDENTIALS" />

<!-- 用于人人SSO登陆 -->
<uses-permission andro
4000
id:name="android.permission.MANAGE_ACCOUNTS" />


4.4在 AndroidManifest.xml 注册需要的Activity
<!-- 微信分享需要注册该activity -->
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent" >
</activity>

<!-- qq回调需要注册该activity -->
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<!-- qq授权需要注册该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" />

<!-- 请将1101255276换成开发者自己应用的腾讯开放平台 Appid-->
<data android:scheme="tencent1101255276" />
</intent-filter>
</activity>

<!-- 人人授权需要注册的activity -->
<activity
android:name="com.renn.rennsdk.oauth.OAuthActivity"
android:configChanges="orientation|navigation|keyboardHidden" />

<!-- 分享界面 -->
<activity
android:name="cn.bidaround.ytcore.activity.ShareActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 新浪微博分享回调需要设置 -->
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

<!-- 应用授权 activity-->
<activity
android:name="cn.bidaround.ytcore.login.AuthActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<!-- 友推积分activity -->
<activity
android:name="cn.bidaround.point.PointActivity" />

<!-- 截屏编辑activity -->
<activity
android:name="cn.bidaround.youtui_template.ScreenCapEditActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" />

<!-- 友推渠道号,应用名(英文或拼音)+"_yt",如:“jd_yt”,用于识别通过友推下载的应用,请正确填写否则无法正确统计 -->
<meta-data
android:name="YOUTUI_CHANNEL"
android:value="yourappname_yt" >
</meta-data>

4.5微信和朋友圈回调设置
 如果需要分享微信和朋友圈,必需建一个 应用包名+ .wxapi 的包,在该包下建 WXEntryActivity.java,将该类继承cn.bidaround.ytcore.wxapi.WXEntryActivity即可(里面不用写代码)
public class WXEntryActivity extends cn.bidaround.ytcore.wxapi.WXEntryActivity {
}


如图:(将com.xingxinglangtuoche替换成你应用的package名,微信回调会使用到)



4.6初始化友推

开发者请在自己的程序开始,最好是在MainActivity的onCreate方法调用YtTemplate.init(this)初始化友推sdk,这样友推sdk才能进行后续调用(否则分享等操作会出现空指针异常),例如:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
YtTemplate.init(this);/*初始化友推*/
initView();
}


应用退出时:

在您项目的出口Activity的 onDestroy 方法的第一行插入下面的代码 YtTemplate.release(this); 此方法用于释放内存,统计用户使用情况,一旦调用了release,就必须重新调用init才能使用友推的功能,否则会出现空指针异常;

4.7创建 ShareData 实例,调用该实例的set方法设置需要分享的数据

 创建ShareData实例,调用该实例的set方法设置自己需要分享的数据,关于该实例具体内容见下文,如果只是分享应用则只需要设置 setIsAppShare(true) 就可以分享应用在友推后台填写的信息和下载链接。

ShareData 包含的字段:

isAppShare

shareType

text

imagePath

imageUrl

description

title

target_url

判断是否为分享应用

分享格式,支持图片及图文链接,默认为分享图文链接

待分享的文字,短信要小于70个字符,微博要小于140个字符,如果需要分享链接,最好将链接url放在最后

待分享的本地图片地址,分享图片的话需要在本地和网络图片中选一,如果都有则优先分享本地图片

待分享网络图片url,分享图片的话需要在本地和网络图片中选一,如果都有则优先分享本地图片

待分享内容的描述

待分享内容的标题

待分享内容的跳转链接

1. 通过创建该类实例,调用实例的set方法设置这些参数,例如:
<span style="font-size:14px;">ShareData shareData = new ShareData();
shareData.isAppShare = false;//设置为true则分享的信息从友推后台填写的应用信息中读取,可动态更新,后面的值不用设置。
shareData.setDescription("友推积分组件");
shareData.setTitle("友推分享");
shareData.setText("通过友推积分组件,开发者几行代码就可以为应用添加分享送积分功能,并提供详尽的后台统计数据,除了本身具备的分享功能外,开发者也可将积分功能单独集成在已有分享组件的app上,快来试试吧 http://youtui.mobi"); shareData.setTarget_url("http://youtui.mobi");
shareData.setImageUrl("http://youtui.mobi/media/image/youtui.png");</span>
上面的设置为分享图文链接,如果只分享图片,请设置:

shareData.setShareType(ShareData.SHARETYPE_IMAGE);//设置分享图片

2. 设置分享内容(详情参看4.8)

<span style="font-size:14px;">//设置默认的分享数据
blackTemp.setShareData(shareData);</span>


4.8调用友推分享推荐组件



为应用添加一个分享推荐按钮,如:



图:分享推荐按钮放置位置示例

在分享按钮事件中调用youtui的组件即可,示例代码:
public void onClick(View v) {
if(v.getId()==R.id.popup_bt){
/*调用友推分享推荐组件,YouTuiViewType类的常量为分享样式参数,目前支持白色列表和黑色网格两种*/
/*创建分享的模板,第一个参数为activity,第二个参数为分享窗口样式,第三个参数为是否需要积分*/
YtTemplate blackTemp = new YtTemplate(this, YouTuiViewType.WHITE_GRID,false);  //白色网格样式不需要积分活动
/*YtTemplate blackTemp = new YtTemplate(this, YouTuiViewType.WHITE_LIST,ture);*/ //白色列表样式需要积分活动

ShareData shareData = new ShareData();
shareData.isAppShare = false;//设置为true则分享的信息从友推后台填写的应用信息中读取,可动态更新后面的值不用设置。
shareData.setDescription("友推积分组件");
shareData.setTitle("友推分享");
shareData.setText("通过友推积分组件,开发者几行代码就可以为应用添加分享送积分功能,并提供详尽的后台统计数据,除了本身具备的分享功能外,开发者也可将积分功能单独集成在已有分享组件的app上,快来试试吧 http://youtui.mobi"); shareData.setTarget_url("http://youtui.mobi");
shareData.setImageUrl("http://youtui.mobi/media/image/youtui.png");
shareData.setImagePath("http://cdnup.b0.upaiyun.com/media/image/default.png");

blackTemp.setShareData(shareData);//设置默认的分享数据;shareData 设置参看4.6
//**如果要为某个平台设置不一样的分享信息。则单独设置*/
//blackTemp.addData(YtPlatform.PLATFORM_QQ, shareData);
//调出分享窗口
blackTemp.show();

//如果需要自定义分享事件,可以创建监听事件,然后在回调中处理
YtShareListener listener1 = new YtShareListener() {
@Override
public void onSuccess(ErrorInfo arg0) {

}

@Override
public void onPreShare() {

}

@Override
public void onError(ErrorInfo arg0) {

}

@Override
public void onCancel() {

}
};
//给新浪微博添加分享监听
blackTemp.addListener(YtPlatform.PLATFORM_SINAWEIBO, listener1);
//给QQ添加分享监听
//blackTemp.addListener(YtPlatform.PLATFORM_QQ, listener2);

}
}

这样就成功集成了友推的分享推荐功能了,用户点击推荐分享按钮后,界面如下:


    

 
  


更详细的Android 分享教程

希望可以多多交流~ 分享到社交平台还有很多学问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息