Android中集成友盟的社会化分享

Android中集成友盟社会化分享

  • Android中集成友盟的社会化分享
    • 1.下载社会化分享的sdk包
    • 2.添加lib包
    • 3.添加回调Activity
      • 微信:
      • QQ与新浪:
    • 在mianifest文件添加回调的空类
    • 添加权限
    • 4.Android6.0权限适配
    • 5.初始化设置
    • 6.签名配置
    • 7.分享的内容

Android中集成友盟的社会化分享

最近用到了友盟的社会化分享,特此记录一下,避免下次踩坑

1.下载社会化分享的sdk包

上面图片点击设置,选择需要集成的第三方平台
上面图片点击设置,选择需要集成的第三方平台,我需要集成的是新浪微博、QQ和微信
Android中集成友盟的社会化分享_第1张图片
点击确定后,会得到一个压缩包,压缩包包含:
分享sdk包中包含的项目
其中 common 中包含组件化核心库(必须添加)
share包中包含第三方平台(也就是新浪微博平台,QQ平台和微信平台)和分享面板(分享面板如果自己有自定义的就可以不添加)

2.添加lib包

将share下main包和platforms包中lib包放到工程libs下
Android中集成友盟的社会化分享_第2张图片

3.添加回调Activity

微信:

在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。
Android中集成友盟的社会化分享_第3张图片

QQ与新浪:

QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:

// 
 @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //QQ 微博需要
        UMShareAPI.get(ShareActivity.this).onActivityResult(requestCode, resultCode, data);
    }

在mianifest文件添加回调的空类

  <!-- sina微博 -->
        <activity
            android:name="com.umeng.socialize.media.WBShareCallBackActivity"
            android:configChanges="keyboardHidden|orientation"
            android:exported="false"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity
            android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
            android:configChanges="keyboardHidden|orientation"
            android:exported="false"
            android:windowSoftInputMode="adjustResize" />
        <activity
            android:name="com.sina.weibo.sdk.share.WbShareTransActivity"
            android:launchMode="singleTask"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
            <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=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <!-- QQ -->
        <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" />
                <!--tencent+腾讯appid-->
                <data android:scheme="tencentXXXXXXX" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <meta-data
            android:name="UMENG_APPKEY"
            android:value="你的友盟appkey" />

添加权限

如果项目做到最后再集成友盟的话,以下权限基本上都已经添加了,可以忽略

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

如果需要使用QQ纯图分享或避免其它平台纯图分享的时候图片不被压缩,可以增加以下权限:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

4.Android6.0权限适配

如果 targetSdkVersion小于或等于22,可以忽略这一步,如果大于或等于23,需要做权限的动态申请:

if(Build.VERSION.SDK_INT>=23){
                  String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};
                  ActivityCompat.requestPermissions(this,mPermissionList,123);
              }

其中123是requestcode,可以根据这个code判断,用户是否同意了授权。如果没有同意,可以根据回调进行相应处理:

 @Override
    public void onRequestPermissionsResult(int requestCode,
            String permissions[], int[] grantResults) {
    }

5.初始化设置

在application 的onCreate方法中初始化

@Override
    public void onCreate() {
        super.onCreate();
    //分享功能初始化
        UMShareAPI.get(this);
        //初始化时可以通过该方法设置组件化的Log是否输出,默认关闭Log输出
        UMConfigure.setLogEnabled(true);
        /**
         * 设置日志加密
         * 参数:boolean 默认为false(不加密)
         */
       // UMConfigure.setEncryptEnabled(true);
        UMConfigure.init(this,"友盟平台的appId"
                ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");
        PlatformConfig.setWeixin("微信APPID", "微信App Secret");
        PlatformConfig.setQQZone("QQ App id","QQ App key");
        //新浪微博(第三个参数为回调地址) 我写的是百度地址
        PlatformConfig.setSinaWeibo("新浪微博 APP Key","微博 APP Secret","http://www.baidu.com");
        }

6.签名配置

将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore
Android中集成友盟的社会化分享_第4张图片
tips:至于签名文件在哪,一般的默认安装到C盘的 签名文件在C:\Users\Administrator.android路径下

在增加签名文件的密码:

 signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }

然后在buildTypes中将这个signingConfigs配置进去(签名文件如果不加,部分平台的授权会受到影响),如下图所示:
Android中集成友盟的社会化分享_第5张图片

7.分享的内容

点击了分享按钮,调用以下方法即可
以下的popWindow 是我自定义的分享面板呀

  private void UMshare(SHARE_MEDIA var1) {
        String webUrl = "https://www.baidu.com";
        String title = "潮趣校园生活尽在猫盒APP";
        String description = "为您提供触手可及的品质生活服务。";
        String imageUrl = "";
        //连接地址
        UMWeb web = new UMWeb(webUrl);
        web.setTitle(title);
        //描述
        web.setDescription(description);
        if (TextUtils.isEmpty(imageUrl)) {
            //本地缩略图
            web.setThumb(new UMImage(this, R.mipmap.share));
        } else {
            //网络缩略图
            web.setThumb(new UMImage(this, imageUrl));
        }
        new ShareAction(this)
                .setPlatform(var1) //SHARE_MEDIA.等等
                .withMedia(web)
                .setCallback(new UMShareListener() {
                    @Override
                    public void onStart(SHARE_MEDIA share_media) {

                    }

                    @Override
                    public void onResult(final SHARE_MEDIA share_media) {
                        showToast("分享成功!");
                        popWindow.dismiss();
                    }

                    @Override
                    public void onError(final SHARE_MEDIA share_media, final Throwable throwable) {
                        showToast("分享失败!");
                        popWindow.dismiss();
                    }
                    @Override
                    public void onCancel(final SHARE_MEDIA share_media) {
                        showToast("取消分享!");
                        popWindow.dismiss();
                    }
                }).share();
    }

友盟社会化分享完成,运行后会发现,只有QQ和新浪微博可以分享出去,呃。。。微信的坑,换成app的正式签名就好了。

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