【友盟 社会化组件之一】集成友盟的分享接口(微信、qq、新浪微博)

注:该实例为AndroidStudio的项目


由于项目需要,研究了一下友盟提供的分享接口,接下来记录一下集成及接口调用的相关步骤

首先

在友盟官网下载Android相关的sdk,这里以精简版qq、精简版新浪微博、完整版微信为例,解压之后:
【友盟 社会化组件之一】集成友盟的分享接口(微信、qq、新浪微博)_第1张图片
文件夹介绍:
common基础库是使用所有友盟+ SDK都必须包含的基础组件
share是分享功能用到的组件
thirdparties是第三方登录的组件(这个留到下一篇去讲)

然后share文件夹中找到如下目录:
【友盟 社会化组件之一】集成友盟的分享接口(微信、qq、新浪微博)_第2张图片
文件夹介绍:
main————为核心包,必须添加
platforms————为平台包,是您选择的各个平台的jar和资源
shareboard————分享面板包,如果不使用,可以不拷贝
shareview————分享编辑页,如果没有使用新浪精简版,豆瓣人人腾讯微博,可以不使用该文件夹
还有一个签名文件,那是默认的debug版,用于调试

集成第一步

最简单的方式就是啥都别讲究,直接将三个文件夹内的所有jar都导入进你自己项目的“libs”文件夹中(我这列表里包含第三方登录的jar)
【友盟 社会化组件之一】集成友盟的分享接口(微信、qq、新浪微博)_第3张图片

然后将之前提到的debug版的签名文件复制到“app”文件夹下
【友盟 社会化组件之一】集成友盟的分享接口(微信、qq、新浪微博)_第4张图片
还有一些图片还有layout什么的,全都放到项目对应的目录下
文件算是处理完了,下面开始初始化代码部分

集成第二步

在工程的build.gradle文件中dependencies下加入

    implementation files('libs/SocialSDK_QQ_Simplify.jar')
    implementation files('libs/SocialSDK_Sina_Simplify.jar')
    implementation files('libs/SocialSDK_WeiXin_Full.jar')
    implementation files('libs/umeng_social_api.jar')
    implementation files('libs/umeng_social_net.jar')
    implementation files('libs/umeng_social_shareview.jar')
    implementation files('libs/umeng_social_tool.jar')

简单一点也可以用以下方式,二选一就行了:

sourceSets {  
        main {  
            jniLibs.srcDirs = ['libs']  
        }  
    }  

然后在build.gradle文件的android节点下添加:

signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
    buildTypes {
        release {
            // 是否进行混淆
            minifyEnabled false
            // 混淆文件的位置
            signingConfig signingConfigs.debug
            proguardFiles 'proguard-rules.pro'
        }

        debug {
            minifyEnabled false
            signingConfig signingConfigs.debug
            proguardFiles 'proguard-rules.pro'
        }
    }

这一步操作是为了把签名文件的密码打包进去,这种写法在实际项目中会将签名文件的密码暴露在版本控制中,所以,建议不要直接写密码,可以试试这种写法“用Gradle构建时,将密码等敏感信息放在build.gradle之外”(这个我暂时还没有做实际的测试使用,你们可以先试试看)
然后处理AndroidManifest.xml文件中的代码,添加要用到的权限

<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.READ_EXTERNAL_STORAGE"/>
    <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" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

节点下添加以下代码:

        <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" > 
        meta-data>
        
        <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=".WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait">
            <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
            android:name="com.umeng.socialize.media.WBShareCallBackActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="false"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" >
        activity>

        <activity
            android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="false"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" >
        activity>
        <activity
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
            android:launchMode="singleTask"
            android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
            <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
            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:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        
        <activity
            android:name="com.umeng.socialize.editorpage.ShareActivity"
            android:excludeFromRecents="true"
            android:theme="@style/Theme.UMDefault"
            />

创建Application文件,进行组件的初始化(记得在内声明name),具体代码是:

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);
        Config.DEBUG = true;
    }

    {
        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com/sina2/callback");

    }
}

第一个参数是各开放平台的key,第二个是密钥,新浪微博那个第三个参数是回调地址;正式使用时要换成自己申请的数据

新建activity “.wxapi.WXEntryActivity”和“WBShareActivity”
【友盟 社会化组件之一】集成友盟的分享接口(微信、qq、新浪微博)_第5张图片
下面就可以在主activity中使用接口了,

  new ShareAction(MainActivity.this).withText("hello").setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN,SHARE_MEDIA.WEIXIN_CIRCLE)
                        .setCallback(shareListener).open();

分享回调函数

    private UMShareListener shareListener = new UMShareListener() {
        /**
         * @descrption 分享开始的回调
         * @param platform 平台类型
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @descrption 分享成功的回调
         * @param platform 平台类型
         */
        @Override
        public void onResult(SHARE_MEDIA platform) {
            Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享失败的回调
         * @param platform 平台类型
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(MainActivity.this, "失败" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享取消的回调
         * @param platform 平台类型
         */
        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show();

        }
    };

收工!

另:如果是为了测试走通分享功能,而不是直接植入正式项目,可以用博文里的各平台key值和密钥等,不过需要包名一致“com.umeng.soexample”

有什么疑问可以留言

你可能感兴趣的:(Android小笔记)