转自:http://www.jianshu.com/p/d455025d5882
产品概述
Android U-share 6.0sdk是在5.0+的基础上做了进一步的优化,降低了包的大小,对于三方的jar提供了更多选择(精简版,原生版),并提供了更多实用的接口,方便了用户的集成和升级。同时6.0的版本兼容5.0+的版本,老用户,只要替换对应的jar就可以了。
特别提示:之后我们会针对6.0+的版本提供更多方便个性的功能,所以建议用户升级,并留意我们接下来的新功能。
获取友盟Appkey
如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它.
如果你尚未在友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击添加新应用,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Appkey。
下载并安装SDK
下载SDK最新版
如下图所示:
快速集成
AndroidStudio
1)新建立一个工程
2)拷贝jar及res
a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程
例如我想用微信,qq和微博三个平台如下图:
注意:微博平台有.so文件,需要在工程下建立一个jniLib的文件夹,将.so放进去,如下图所示
b.如果不想像a方式一样一个个拷贝,可以使用集成工具umeng_integrate_tool.jar
双击点开这个工具,如下图所示:
选择你想使用的平台,以及你所使用的开发工具,点击ok
会在当前目录下生成一个新的文件夹umeng_integratetool_result
只需将该文件夹下生成的对应文件对应放入你的工程中即可
3)添加对应的回调Activity
包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:
在这里你可能会爆红也可能不爆红这是由于IDE还没有sync刚才放入的jar包。
同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。
同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity类即可,不用建立文件夹,该类继承WBShareCallBackActivity,如下图所示(注意看目录结构):
4)修改AndroidManiFest
首先需要添加权限:
然后加入sdk中需要的Activity:
新浪微博:
android:name=".WBShareActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" >
android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"
android:exported="false" >
android:exported="false">
微信:
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
支付宝:
android:name=".apshare.ShareEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
qq:
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
分享编辑页:
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:theme="@style/Theme.UMDefault"
android:excludeFromRecents="true"
/>
其他平台的回调activity请到附录中查询。
添加友盟appkey
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
5)修改build.gradle文件
将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore
然后增加签名文件的密码:
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
然后在buildTypes中将这个signingConfigs配置进去,如下图所示:
签名文件如果不加,部分平台的授权会受到影响。
6)配置各个平台的appkey
建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".App"
android:theme="@style/AppTheme">
在application文件中配置三方平台的appkey:
public class App extends Application{
{
PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
}
}
7)增加代码
例如我有三个按钮,分别进行qq平台的分享,授权,和打开分享面板:
点击分享按钮:
findViewById(R.id.share).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new ShareAction(MainActivity.this).setPlatform(SHARE_MEDIA.QQ)
.withText("hello")
.setCallback(umShareListener)
.share();
}
});
其中umShareListener为回调监听,构建如下:
private UMShareListener umShareListener = new UMShareListener() {
@Override
public void onResult(SHARE_MEDIA platform) {
Log.d("plat","platform"+platform);
if(platform.name().equals("WEIXIN_FAVORITE")){
Toast.makeText(MainActivity.this,platform + " 收藏成功啦",Toast.LENGTH_SHORT).show();
}else{
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();
}
};
更多分享类型请参见详细集成文档或参照demo。
点击授权按钮:
findViewById(R.id.auth).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UMShareAPI mShareAPI = UMShareAPI.get( MainActivity.this );
mShareAPI.doOauthVerify(MainActivity.this, SHARE_MEDIA.QQ, umAuthListener);
}
});
其中umAuthListener为授权回调,构建如下:
private UMAuthListener umAuthListener = new UMAuthListener() {
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map data) {
Toast.makeText(getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
}
};
点击打开面板:
findViewById(R.id.shareboard).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new ShareAction(MainActivity.this).withText("hello")
.setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
.setCallback(umShareListener).open();
}
});
打开面板的使用方式与分享类似,只是一个设置单一的使用平台,一个设置一个平台list,一个最后调用的是share方法,一个调用open的方法。关于分享面板还有许多拓展功能,可以参照详细集成文档。
最后在Activity的onActivityResult中加入我们的回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
作者:AiPuff
链接:http://www.jianshu.com/p/d455025d5882
來源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。