1、获取appKey
2、下载所需要的SDK(解压后见)
3、添加jar包(注:添加后需要---小锤子锤下或者Add As Library构建下,里面的jar包和资源要添加完)
common 组件化核心库(必须添加)
share 三方平台库
thirdparties 组件化三方库(不必添加)
4、添加回调Activity
a、微信
在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。
b、QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
注意onActivityResult不可在fragment中实现,如果在fragment中调用登录或分享,需要在fragment依赖的Activity中实现
5、配置清单文件
微博
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false"
>
</activity>
<activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize"
>
</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=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
QQ(请注意将我们的qq appkey替换成您自己的qq appkey)tencent+appkey---下面scheme修改
<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:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
6、清单列表声明权限(危险权限需要动态获取)
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
7、在BaseApp初始化
@Override
public void onCreate() {
super.onCreate();
sContext = this;
initUmeng();
}
//友盟初始化
private void initUmeng() {
UMConfigure.init(this,"5a12384aa40fa3551f0001d1"
,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0
//设置各个平台的appkey
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
PlatformConfig.setSinaWeibo("3921700954","04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
}
8、7.0.2版本更新
QQ完整版分享模块依赖QQ官方分享SDK v3.3.8.lite(r8353806),需在工程AndroidManifest.xml清单文件中增加”android.support.v4.content.FileProvider”配置。注意,对应authorities属性值请结合您自己包名自行定义,不要直接使用Umeng Demo工程中属性值com.tencent.sample2.fileprovider。
<provider
android:authorities="com.tencent.sample2.fileprovider"
android:name="android.support.v4.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true"
>
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="opensdk_external" path="Images/tmp"/>
<root-path name="opensdk_root" path=""/>
</paths>
9、集成QQ分享模块7.0.2版本后,需要在平台初始化代码后调用PlatformConfig.setQQFileProvider接口将您自行定义的authorities属性值作为参数传入。如下图例子红框代码所示。
10、签名配置
将文件夹中的签名文件放入到工程中(app下面)
11、增加签名文件的密码
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.lenovo.mvp_extract_002"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
//signingConfigs配置进
signingConfig signingConfigs.debug
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
//signingConfigs配置进
signingConfig signingConfigs.debug
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
//这里是添加的代码
signingConfigs {
debug {
storeFile file('ceshi.jks')//写自己的签名文件名字
storePassword "123456"
keyAlias "luoxue"
keyPassword "123456"
}
}
}
12、设置布局
@OnClick(R.id.btn)
public void onClick() {
shareBoard();
}
带面板的分享
private void shareBoard() {
new ShareAction(this)
.withText("hello")//分享的文本
.setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)//分享的平台
.setCallback(shareListener).open();
}
umShareListener为回调监听,构建如下:
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) {
ToastUtil.showToastShort("成功");
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
ToastUtil.showToastLong("失败");
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
ToastUtil.showToastShort("取消");
}
};