友盟项目的包名必须是 com.umeng.soexample
Umeng不要用自动集成
建议用手动集成
第一步下载官方的demo
下载SDK
可以选择要分享app
比如说就微信和QQ(完整版)
点开开发文档
点开手动集成步骤
下载的SDK中的所有jar包和布局文件中的资源layout和图片全部导入自己的demo
有微信的话
在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。
有支付宝的话
与微信相似,支付宝需要在包名目录下创建apshare文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。
有钉钉的话
与微信相似,钉钉需要在包名目录下创建ddshare文件夹,然后建立一个DDShareActivity的类,DingCallBack。
QQ与新浪
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);
}
配置清单文件
例子(微信)
详情见开发者中心
https://developer.umeng.com/docs/66632/detail/66639#h3--sdk
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"/>
添加权限
如果需要用到QQ 需要
初始化设置
第二个箭头指的是打开log日志
接下来需要设置各个平台的appkey:
//微信
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
//豆瓣RENREN平台目前只能在服务器端配置
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
//QQ
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
PlatformConfig.setAlipay("2015111700822536");
PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
PlatformConfig.setPinterest("1439206");
PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
签名配置
在下载的demo中app文件夹下面有一个debug.keystore
将文件夹中的签名文件(debug.keystore)放入到工程中
然后增加签名文件的密码:
signingConfigs {
debug {
storeFile file(‘debug.keystore’)
storePassword “android”
keyAlias “androiddebugkey”
keyPassword “android”
}
}
然后在buildTypes中将这个signingConfigs配置进去,如下图所示:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
}
别忘了在清单文件中初始化Application
例子:
在布局文件中创建一个按钮
找到控件
设置监听并且实现点击接口和UMShareListener接口
在点击事件的重写方法中
分享面板的分享
第一个箭头是要分享的一个自定义图片
第二个箭头是要分享的文字
第三个箭头是设置分享面板里面要分享的APP
(下载的SDK有几个APP分享就弄几个)
第四个箭头则是实现的这个接口
之后打开行可以了
在UMshareListener事件的重写方法中
第一个是分享开始的回调
第二个是分享成功的回调
第三个是分享失败的回调
第四个是分享取消的回调
比如微信我在第二个重写方法(分享成功)里面加了一个吐司
如果在模拟器上可以看到这个吐司的话 必须分享之后选择不留在微信上才可以看到
——————————————————————————————————————————
分享(带面板)
打开分享面板的代码如下:
new ShareAction(MainActivity.this).withText(“hello”) .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
.setCallback(umShareListener).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) {
Toast.makeText(ShareDetailActivity.this,"成功 了",Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(ShareDetailActivity.this,"失 败"+t.getMessage(),Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(ShareDetailActivity.this,"取消 了",Toast.LENGTH_LONG).show();
}
};
分享
UMImage image = new UMImage(MainActivity.this, R.drawable.a);//资源文件
image.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,适合普通很大的图
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
//压缩格式设置
image.compressFormat = Bitmap.CompressFormat.PNG;//用户分享透明背景的图片可以设置这种方式,但是qq好友,微信朋友圈,不支持透明背景图片,会变成黑色
new ShareAction(MainActivity.this).withText("hello").withMedia(image).setDisplayList(SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
.setCallback(this).open();