`
modabobo
  • 浏览: 510131 次
文章分类
社区版块
存档分类
最新评论

移动共享开发(一)基本配置

 
阅读更多

注意

1:QQ和QQ Zone SSO(免登录)引用的jar文件相同。当需要同时支持QQ和QQ Zone的时候,只需添加一次SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件即可.
2:由于我们对微信的包名做了修改(libammsdk.jar -> SocialSDK_WeiXin.jar),如出现"Unable to execute dex: Multiple dex files define "问题,请删除libammsdk.jar或者SocialSDK_WeiXin.jar中的一个即可解决问题。

添加资源文件和jar文件有三种方式,请根据您的需求进行选择

方法A:快速集成工具 ( 推荐 )

1:解压SDK下载包,双击运行SDK根目录下的SDKIntegration.jar或者在命令行下输入java -jar SDKIntegration.jar运行集成工具;
2:选择Android工程的根目录,并且填写您的友盟App Key;
3:勾选所需平台和组件,点击"快速集成";
4:检查AndroidManifest.xml、jar文件是否正确。如果集成了QQ或者QZone,请修改相应地appid。如下图所示:


方法B:添加工程引用(升级方便,推荐)

解压SDK压缩包,将文件夹中的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。

方法C:添加资源到现有项目中

解压SDK压缩包,将文件夹中的'main/libs'和'main/res'文件夹复制到你的项目工程根目录下(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程Path中):


Manifest配置,添加友盟Appkey/Activity/权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.umeng.soexample"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <activity
            android:name="com.umeng.soexample.activity.WelActivity"
            android:configChanges="orientation|keyboard"
            android:label="@string/app_name"
            android:noHistory="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 友盟AppKey, 需要替换成你自己的 -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="4eaee02c527015373b000003" >
        </meta-data>
        <!-- 4eaee02c527015373b000003 -->
        <!-- android:value="52a98cf856240b902211203e" > -->


        <!-- *************************    分享相关的注册 START **************************** -->
        <!-- 分享内容编辑页 -->
        <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>

        <!-- 腾讯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" />

                <data android:scheme="tencent100424468" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- 微信回调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 -->
        <activity
            android:name=".yxapi.YXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

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

        <!-- facebook相关 -->
        <activity android:name=".activity.FacebookActivity" >
        </activity>
        <activity
            android:name="com.facebook.LoginActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- *************************    分享相关的注册 END **************************** -->


        <!-- 评论相关注册  START -->
        <activity
            android:name="com.umeng.socialize.view.CommentActivity"
            android:configChanges="orientation|keyboard"
            android:theme="@style/Theme.UMDefault" >
        </activity>
        <activity
            android:name="com.umeng.socialize.view.CommentDetail"
            android:configChanges="orientation|keyboard"
            android:noHistory="true"
            android:theme="@style/Theme.UMDefault" >
        </activity>
        <activity
            android:name="com.umeng.socialize.view.CommentDetailNoMap"
            android:configChanges="orientation|keyboard"
            android:noHistory="true"
            android:theme="@style/Theme.UMDefault" >
        </activity>
        <!-- 评论相关注册  End -->
        -->


        <!-- Socialize Example Activity -->

        <activity
            android:name=".activity.NavigationActivity"
            android:configChanges="orientation|keyboard"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
        </activity>
        <activity
            android:name=".activity.SocialHomeActivity"
            android:configChanges="orientation|keyboard"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name=".activity.SwitchActivity"
            android:configChanges="orientation|keyboard"
            android:label="@string/app_name"
            android:launchMode="standard" >
        </activity>
        <activity
            android:name=".activity.CustomPlatformActivity"
            android:configChanges="orientation|keyboard"
            android:label="@string/umeng_example_home_btn_plus" >
        </activity>
        <activity
            android:name=".activity.ActionBarExampleDetail"
            android:configChanges="orientation|keyboard"
            android:label="@string/umeng_example_home_btn_plus" >
        </activity>

        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="Umeng" >
        </meta-data>

        <uses-library
            android:name="com.google.android.maps"
            android:required="false" />
        <uses-library android:name="android.test.runner" />
    </application>

    <!-- instrumentation -->
    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.umeng.soexample" />

    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="14" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <!-- renren sso Permission for Unit Test -->
    <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" />

</manifest>

如果选用多种UmengSDK产品使用不同Appkey,可为SocialSDK配置单独的appkey,如下:

/*代码添加Appkey,如果设置了非null值,SocialSDK将使用该值.*/
SocializeConstants.APPKEY = "xxxxxxxxx";

打开平台选择面板

首先在您的Activity中添加如下成员变量并设置分享内容

// 首先在您的Activity中添加如下成员变量
final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share");

设置分享内容包括文字、图片及其他多媒体资源、跳转链接

// 设置分享内容
mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www.umeng.com/social");
// 设置分享图片, 参数2为图片的url地址
mController.setShareMedia(new UMImage(getActivity(), 
                                      "http://www.baidu.com/img/bdlogo.png"));

新浪微博、腾讯微博及豆瓣的跳转链接只能设置在分享文字之中,以http形式传递即可,人人网可以单独设置跳转链接,方法为:

mController.setAppWebSite(SHARE_MEDIA.RENREN, "http://www.umeng.com/social");

分享图片支持本地图片、URL图片,其中本地图片支持绝对路径及资源引用两种方式

设置URL图片方法:

mController.setShareMedia(new UMImage(getActivity(), 
                                      "http://www.baidu.com/img/bdlogo.png"));

传递本地图片绝对路径方法:

mController.setShareMedia(new UMImage(getActivity(), 
                            BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));

传递本地图片资源引用方法:

mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));

分享音乐只支持URL封装的音乐资源,不支持本地音乐

UMusic uMusic = new UMusic("http://music.163.com/song/254270/");
uMusic.setAuthor("GuGu");
uMusic.setTitle("天籁之音");
// 设置音乐缩略图
uMusic.setThumb("http://www.baidu.com/img/bdlogo.png");
mController.setShareMedia(uMusic);

分享视频资源同样只支持URL资源

// 设置分享视频
UMVideo umVideo = new UMVideo(
          "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");
// 设置视频缩略图
umVideo.setThumb("http://www.baidu.com/img/bdlogo.png");
umVideo.setTitle("友盟社会化分享!");
mController.setShareMedia(umVideo);

给不同的平台设置不同的分享内容,其中不同平台的多媒体、文字内容都可以定制化。当某个平台没有设置定制化的分享内容时, 将会使用默认设置的分享内容。

以下以单独设置腾讯微博分享视频为例:

UMVideo umVideo = new UMVideo(
                "http://v.youku.com/v_show/id_XNTc0ODM4OTM2.html");
umVideo.setThumb("http://www.baidu.com/img/bdlogo.png");
umVideo.setTitle("友盟社会化组件视频");
TencentWbShareContent tencentContent = new TencentWbShareContent(umVideo);
// 设置分享到腾讯微博的文字内容
tencentContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,腾讯微博");
// 设置分享到腾讯微博的多媒体内容
mController.setShareMedia(tencentContent);

其他平台单独设置内容参照上面代码即可,只需替换平台参数名

新浪微博 SinaShareContent
腾讯微博 TencentWbShareContent
人人网 RenrenShareContent
豆瓣 DoubanShareContent
Twitter TwitterShareContent
G+ GooglePlusShareContent

设置通用的多媒体分享内容


// 构建UMImage,参数1为当前的activity 参数2为图片的链接
UMImage shareImage = new UMImage(getActivity(),
"http://www.umeng.com/images/pic/banner_module_social.png");
// 设置图片分享内容,
mController.setShareMedia( shareImage );
设置平台独立的分享内容

// 构建UMImage,参数1为当前的activity 参数2为图片的链接
UMImage shareImage = new UMImage(getActivity(),
"http://www.umeng.com/images/pic/banner_module_social.png");
// 设置微信平台的分享内容
// 微信平台的分享内容, 多媒体内容设置为图片, 且只能设置为一种类型
WeiXinShareContent weixinContent = new WeiXinShareContent(shareImage);
weixinContent.setShareContent("来自友盟社会化组件(SDK) 让移动应用快速整合社交分享功能,
微信");
weixinContent.setTitle("友盟社会化分享组件-微信");
mController.setShareMedia(weixinContent);
// 音乐类型
UMusic uMusic = new
UMusic("http://sns.whalecloud.com/test_music.mp3");
uMusic.setAuthor("umeng");
uMusic.setTitle("天籁之音");
uMusic.setThumb(mUMImgBitmap);
//设置QQ平台的分享内容
QQShareContent qqShareContent = new QQShareContent( uMusic );
qqShareContent.setShareContent("来自友盟社会化组件(SDK) 让移动应用快速整合社交分享功能 -
- QQ");
qqShareContent.setTitle("hello, qq");
qqShareContent.setTargetUrl("htp://www.google.com.hk");
mController.setShareMedia(qqShareContent);

人人网分享时,如果不设置website,点击¨应用名称¨或者¨图片¨将跳转到人人网主页;如果设置website将跳转到此website的页面。

新浪微博、腾讯微博及豆瓣的跳转链接只能设置在分享文字之中,以http形式传递即可,人人网可以单独设置跳转链接,方法为:

mController.setAppWebSite(SHARE_MEDIA.RENREN, "http://www.umeng.com/social");

通过某个按钮或其他方法弹出分享面板

mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);
yourShareButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // 是否只有已登录用户才能打开分享选择页
        mController.openShare(getActivity(), false);
    }
});




调用打开分享面板接口的示例代码如下(含有回调):

public void onClick(View v) {
// 点击相关按钮,打开分享面板
if ( v == mUmengSdkButton ) {
mController.openShare(getActivity(), new SnsPostListener() {
@Override
public void onStart() {
//分享开始
}
@Override
public void onComplete(SHARE_MEDIA platform, int eCode, SocializeEntity entity) {
//分享结束, eCode==200代表分享成功,非200代表分享失败
}
});
}
}

验证效果

编译并运行后,点击添加分享功能的View出现如下页面,那么说明你已经集成成功基本的分享功能和平台了!但是,为了使您的用户有更好的分享体验,以及您的应用有更多的分享量,更好地在社交平台上传播,我们建议您按照下面的指引进行SSO(免登录)和新平台的设置。



在程序入口加入**com.umeng.socialize.utils.Log.LOG = true**,可在LogCat中观察友盟日志。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics