友盟集成总得来说可以分为:
1.友盟官方账号申请+SDK集成
2.第三方账号申请+应用创建
3.将三方的appId和appKey配置到应用
4.分享和登录Api调取实现分享和登录
具体用法可根据官方学习https://developer.umeng.com/docs/66632/detail/66639
一.友盟官方注册账号
二.创建应用,生成对应的appkey
image.png进入友盟,点击:产品|解决方案--->移动统计(U-APP,AI版)--->进入新版-->添加新应用,填写信息并获取appkey,该appKey不和应用包名绑定
将返回回来的 代码:保存下来_____我自己注册的是:5c8085100cafb299810008a8
三.下载最新版sdk:https://developer.umeng.com/sdk,如图勾选自己需要的,我们选中:移动统计sdk和社会化分享sdk,可以下载demo,在本页面右上角
image.png现在完成后将sdk中的 依赖 和资源往studio的导入
image.png四.申请三方账号
https://dev.umeng.com/social/android/operation
我们去申请对应的qq,新浪,和微信
[图片上传失败...(image-3b1f60-1551963529397)]
1.QQ:https://connect.qq.com/index.html, 申请账号,进行认证(需要审核),完成之后创建应用
需要绑定包名和签名(使用别的appid也可以,但开发用自己的)
2.微信:https://open.weixin.qq.com/
微信开放平台,需要认证审核,每年300,认证通过可以创建应用,和包名+签名文件绑定
image.png3.新浪:https://open.weibo.com/
需要绑定包名和签名(使用别的App Key和App Secret不行),申请完应用需要去高级里面添加授权回调页:
http://sns.whalecloud.com
申请时将:
App Key:925279143
App Secret:fea910b1c2f1ad50c024c0bcd0662dbf
记下
要将文件转成安装包后将签名文件
具体代码
权限
<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" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
在清单文件中加入<application>内 这些只有qq,微信,微博 ,其中WXEntryActivity(微信)需要自己建一个在wxapi包里activity继承WXCallbackActivity
<!--开始-->
<!--微信-->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--新浪-->
<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>
<!--qq(请注意将我们的qq appkey替换成您自己的qq appkey):-->
<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"/>
<!--结束-->
清单文件完成后建一个BaseApp类继承Application一定要在清单文件中注册
public class BaseApp extends Application {
@Override
public void onCreate() {
super.onCreate();
UMConfigure.init(this, "5a12384aa40fa3551f0001d1"
, "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
PlatformConfig.setSinaWeibo("925279143", "fea910b1c2f1ad50c024c0bcd0662dbf","http://sns.whalecloud.com");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
}
具体实现
1 * 带面板的分享
//_-------------------------
/**
* 带面板的分享
* 未改appkey和appId
* 新浪失败
* qq不用自己的appkey和appId,也能成功,但是以后也一定用自己的
* wechat,肯定不成功
*/
private void shareBoard() {
UMImage image = new UMImage(MainActivity.this, "http://ww1.sinaimg.cn/large/7a8aed7bgw1esq1fnt1s1j20h10pd0us.jpg");//网络图片
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
new ShareAction(MainActivity.this).withText("hello")
.withMedia(image)
.setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN)
.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();
}
};
2.不带版的分享
//-------------------------------------------------
//不带版的分享
public void shareNoBorad(SHARE_MEDIA share_media) {
UMImage image = new UMImage(MainActivity.this,
"http://ww2.sinaimg.cn/large/7a8aed7bgw1essxtqxs6jj20mj0tzdhl.jpg");//网络图片
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
new ShareAction(MainActivity.this)
.setPlatform(share_media)//传入平台
.withText("hello")//分享内容
.withMedia(image)
.setCallback(shareListener)//回调监听器
.share();
}
调用使用
shareNoBorad(SHARE_MEDIA.QQ);
shareNoBorad(SHARE_MEDIA.WEIXIN);
shareNoBorad(SHARE_MEDIA.SINA);
3.登录
//-----------------登录------------
/**
* 未改appkey和appId
* 新浪 失败
* qq 失败
* wechat,失败
* @param media
*/
public void login(SHARE_MEDIA media){
UMShareAPI umShareAPI = UMShareAPI.get(this);
umShareAPI.getPlatformInfo(MainActivity.this, media ,authListener);
}
UMAuthListener authListener = new UMAuthListener() {
/**
* @desc 授权开始的回调
* @param platform 平台名称
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @desc 授权成功的回调
* @param platform 平台名称
* @param action 行为序号,开发者用不上
* @param data 用户资料返回
*/
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
log(data);
Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show();
}
/**
* @desc 授权失败的回调
* @param platform 平台名称
* @param action 行为序号,开发者用不上
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText(MainActivity.this, "失败:" + t.getMessage(),Toast.LENGTH_LONG).show();
}
/**
* @desc 授权取消的回调
* @param platform 平台名称
* @param action 行为序号,开发者用不上
*/
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show();
}
};
/*
* 将登陆的用户信息log出来
* */
private void log(Map<String, String> data) {
for (Map.Entry<String,String> set: data.entrySet()){
String key = set.getKey();
String value = set.getValue();
Log.d("zll", "key: "+key+",value:"+value);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
UMShareAPI.get(this).release();
}
调用使用
login(SHARE_MEDIA.QQ);
login(SHARE_MEDIA.WEIXIN);
login(SHARE_MEDIA.SINA);
网友评论