Android友盟分享集成与走过的坑

友盟享集成与走过的坑

项目需要使用友盟分享,之前都是使用快速集成,集成过程中也有各种坑,通过网上查阅相关资料都克服了。这次集成友盟时,其中QQ的相关SDK怎么也下载不下来,笨人笨方法,我决定用一下手动集成。记录一下使用过程中碰到的问题,以防以后再碰到

使用环境:windows7,AndroidStudio3.1

一、下载相关sdk

android友盟分享SDK下载地址

选择相应的SDK,这次仅使用了qq、微信、微博相关的,下载相关社会化分享SDK,下载后解压,备用;

二、下载SDK集成辅助工具

SDK集成辅助工具下载地址

辅助工具需要java环境才能使用,运行友盟集成辅助工具
使用步骤:
  1. 选择Android
  2. 点击第一个菜单“…”
  3. 选择下载的sdk解压后的文件夹
  4. 自动生成library包UMLibrary,在项目中引用这个library

三、添加回调Activity(这里只用了微信)

在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity,Activity中不需要添加任何代码,但是需要配置Android Manifest XML
在Android Manifest XML中添加
 <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

四、配置Android Manifest XML

微信相关的配置在上一步已经做好,这里只写QQ和微博相关的,使用时可直接将下面的代码复制粘贴到项目Android Manifest XML中
新浪微博:
        <activity
            android:name="com.umeng.socialize.media.WBShareCallBackActivity"
            android:configChanges="keyboardHidden|orientation"
            android:exported="false"
            android:theme="@android:style/Theme.Translucent.NoTitleBar">

        </activity>
        <activity
            android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
            android:configChanges="keyboardHidden|orientation"
            android:exported="false"
            android:windowSoftInputMode="adjustResize">

        </activity>
        <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>
qq:
注意:把AuthActivity中data的scheme值换成你的QQ appkey,前面的tencent要保留
        <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="tencent你的appkey" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

五、权限配置

请在AndroidManifest中添加如下权限
<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"/>
Android6.0权限适配
请查看你的build.gradle文件,如果 targetSdkVersion小于或等于22,可以忽略这一步,如果大于或等于23,需要做权限的动态申请,目前我的项目只需要申请下面的权限,以后有需要自行查看官方文档:
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.CALL_PHONE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.READ_EXTERNAL_STORAGE

六、初始化设置

  1. 首先去各个平台申请注册,获得各平台appKey,然后设置各个平台的appKey,参考代码如下,这里只设置qq、微信、微博。更多参考官方文档
PlatformConfig.setWeixin("你的AppID", "你的AppSecret");
//新浪微博,最后一个参数为回调地址,
PlatformConfig.setSinaWeibo("你的App Key", "你的App Secret","http://sns.whalecloud.com");
//QQ
PlatformConfig.setQQZone("你的APP ID", "你的APP KEY");
  1. 如果需要启用debug模式,请在初始化之前添加下面的代码,注意:产线环境关闭debug
UMConfigure.setLogEnabled(true); 
  1. 在Application中调用初始化接口
//第二个参数为友盟的AppKey,其他的使用代码中的值
UMConfigure.init(this, "AppKey", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");

到此为止,全部配置完成,如何使用参考官方文档,写这个文章仅做自己以后参考

下面列举一下需要注意的事项以及遇到的坑

问题1:

集成UMLibrary时报错

The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?

翻译过来就是:

“SourceSet” 的'instrumentTest' 没有被Android Gradle插件识别。也许你拼错吗?

解决方法:
修改UMLibrary中build.gradle文件,将instrumentTest.setRoot('tests')改为androidTest.setRoot('tests'),重新同步编译即可成功

注意事项:
  1. QQ相关配置Android Mainfest XML时,data中scheme的值前面必须添加“tencent”,初始化配置平台appKey的时候不需要添加
  2. 添加微信回调时,必须在包名目录下创建WXEntryActivity
  3. 需要在使用QQ分享或者授权的Activity中,添加下面代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

以上就是这次使用总结,以后再补充

猜你喜欢

转载自blog.csdn.net/weihua_li/article/details/81184613