友盟分享、第三方登录

转自: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最新版

如下图所示:

友盟分享、第三方登录_第1张图片

快速集成

AndroidStudio

1)新建立一个工程

友盟分享、第三方登录_第2张图片

2)拷贝jar及res

a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程

例如我想用微信,qq和微博三个平台如下图:

友盟分享、第三方登录_第3张图片

注意:微博平台有.so文件,需要在工程下建立一个jniLib的文件夹,将.so放进去,如下图所示

友盟分享、第三方登录_第4张图片

b.如果不想像a方式一样一个个拷贝,可以使用集成工具umeng_integrate_tool.jar

友盟分享、第三方登录_第5张图片

双击点开这个工具,如下图所示:

友盟分享、第三方登录_第6张图片

选择你想使用的平台,以及你所使用的开发工具,点击ok

会在当前目录下生成一个新的文件夹umeng_integratetool_result

友盟分享、第三方登录_第7张图片

只需将该文件夹下生成的对应文件对应放入你的工程中即可

3)添加对应的回调Activity

包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:

友盟分享、第三方登录_第8张图片

在这里你可能会爆红也可能不爆红这是由于IDE还没有sync刚才放入的jar包。

同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。

同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity类即可,不用建立文件夹,该类继承WBShareCallBackActivity,如下图所示(注意看目录结构):

友盟分享、第三方登录_第9张图片

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

友盟分享、第三方登录_第10张图片

然后增加签名文件的密码:

signingConfigs {

debug {

storeFile file('debug.keystore')

storePassword "android"

keyAlias "androiddebugkey"

keyPassword "android"

}

}

然后在buildTypes中将这个signingConfigs配置进去,如下图所示:

友盟分享、第三方登录_第11张图片

签名文件如果不加,部分平台的授权会受到影响。

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

來源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(友盟分享、第三方登录)