U-share分享
1. 获取SDK
全选分享平台,(注意:微信 新浪微博 QQ 均有精简和完整.推荐完整版因为现在的手机内存大的可拍不差你这几百Kb)
下载demo工程(AS或ECLIPSE)
解压SDK,使用友盟集成工具选在自己需要的分享平台,选择AS或ECLIPSE,选择是否使用分享面板 ok既可生成所需的jar包 res src(若第1步操作有误,则可能有些jar及资源文件生成不出来)
2. 工程配置
拷贝jar和res以及src到相应目录下(WX,支付宝,易信要创建相应的文件夹在自己的包下 具体名字请看官方demo)
修改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.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
- 加入sdk中需要的Activity
<!--新浪微博-->
<activity
android:name=".WBShareActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" >
<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" />
<!--支付宝-->
<activity
android:name=".apshare.ShareEntryActivity"
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" />
<data android:scheme="tencent100424468" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
<!--分享编辑页(只有新浪微博精简版,豆瓣人人腾讯微博领英twitter需要)-->
<activity
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:theme="@style/Theme.UMDefault"
android:excludeFromRecents="true"
/>
<!--添加友盟appkey-->
<meta-data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
</meta-data>
- 修改build.gradle文件
buildTypes {
release {
// 是否进行混淆
minifyEnabled true
// 混淆文件的位置
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
debug {
minifyEnabled true
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore,官方给出的说法是不配置debug可能会影响授权 暂未发现 楼主会跟进的.
配置各个平台的appkey(创建application文件)
import android.app.Application;
import com.umeng.socialize.Config;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.common.QueuedWork;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//开启debug模式,方便定位错误,具体错误检查方式可以查看http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式
Config.DEBUG = true;
QueuedWork.isUseThreadPool = false;
UMShareAPI.get(this);
}
//各个平台的配置,建议放在全局Application或者程序入口
{
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
//豆瓣RENREN平台目前只能在服务器端配置
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
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");
}
}
3. 分享
- 在需要弹出分享面板选择页的地方调用下列代码(分享链接示例)
UMWeb web = new UMWeb("https://www.hao123.com/");
web.setTitle("This is music title");//标题
web.setThumb(new UMImage(this, "https://mobile.umeng.com/images/pic/home/social/img-1.png"));//缩略图
web.setDescription("my description");//描述
new ShareAction(MainActivity.this)
.withMedia(web)
.setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.QZONE, SHARE_MEDIA.SMS)
.setCallback(umShareListener)
.open();
- 回调与监听
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
private UMShareListener umShareListener = new UMShareListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
//分享开始的回调
}
@Override
public void onResult(SHARE_MEDIA platform) {
Log.d("plat", "platform" + platform);
Toast.makeText(MainActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(MainActivity.this, platform + " 分享失败啦", Toast.LENGTH_SHORT).show();
if (t != null) {
Log.d("throw", "throw:" + t.getMessage());
}
}
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, platform + " 分享取消了", Toast.LENGTH_SHORT).show();
}
};
4. 让世界更美好(一些走过的坑)
关于分享其实做到如上步骤基本上也就结束了,但是实际用的时候也会有些出入下面介绍一些经验
- 各个平台的appkey一定要配对
- 配对了appkey微信分享不了(what?不要慌错不在你这有可能是SDK的BUG取论坛看看吧)
- 新浪微博不配appkey直接调不起来,配了未审核的appkey可以调起但分享不成功,审核过了就好
好啦大工告成