1.搭建环境:
下载Demo就不说了官网上有下载步骤:
a.拷贝Jar包,添加依赖
b.添加Res图片,layout布局,Values资源
c.清单文件里添加权限
d.清单文件里配置Activity的信息(注意红色为要替换的信息)
573f0e9267e58e8e48001545">
e.把签名拷贝到自己要集成第三方登录的项目中
f.在项目中的build文件中进行配置
signingConfigs { debug { storeFile file('debug.keystore') storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } }
g.自定义Application,进行UMSDK的初始化操作(清单文件进行注册)
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //U盟SDK初始化 UMShareAPI.get(this); } { PlatformConfig.setQQZone("1106036236","mjFCi0oxXZKZEWJs"); } }
2.activity逻辑代码:
public class MainActivity extends AppCompatActivity { private ImageView iv_login; private ImageView iv_share; private TextView tv_result; //A.定义装平台的容器 public ArrayListplatforms = new ArrayList (); private SHARE_MEDIA[] list = {SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE}; private UMShareAPI mUMShareAPI; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //A.三方平台,添加到遍历的集合中 initPlatforms(); //A.获取UM的对象 mUMShareAPI = UMShareAPI.get(MainActivity.this); //A.获取是否授权 final boolean isauth = UMShareAPI.get(this).isAuthorize(this, platforms.get(0).mPlatform); //A.点击QQ的头像,进行授权 iv_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (isauth){ Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show(); mUMShareAPI.deleteOauth(MainActivity.this, platforms.get(0).mPlatform,authListener); }else{ mUMShareAPI.doOauthVerify(MainActivity.this, platforms.get(0).mPlatform,authListener); } mUMShareAPI.getPlatformInfo(MainActivity.this, platforms.get(0).mPlatform,authListener); } }); //B.分享的逻辑代码 ImageView iv_share = (ImageView) findViewById(R.id.iv_share); final UMImage image = new UMImage(MainActivity.this, "http://b.hiphotos.baidu.com/zhidao/pic/item/63d9f2d3572c11df28e42e30602762d0f703c2e8.jpg");//网络图片 final UMImage imagelocal = new UMImage(this, R.mipmap.ic_launcher); imagelocal.setThumb(new UMImage(this, R.mipmap.ic_launcher)); imagelocal.setTitle("易宸锋好帅"); iv_share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new ShareAction(MainActivity.this).withMedia(image) .setPlatform(platforms.get(0).mPlatform) .setCallback(shareListener).share(); new ShareAction(MainActivity.this).setPlatform(SHARE_MEDIA.QQ) .withText("hello") .setCallback(shareListener) .share(); } }); } //A. private void initPlatforms() { //A.集合清空 platforms.clear(); //A.通过for循环,把数组数据添加到集合中 for (SHARE_MEDIA e : list) { if (!e.toString().equals(SHARE_MEDIA.GENERIC.toString())) { platforms.add(e.toSnsPlatform()); } } } //A. UMAuthListener authListener = new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { //授权开始的回调,可以用来处理等待框,或相关的文字提示 } @Override//授权成功时回调 public void onComplete(SHARE_MEDIA platform, int action, Map data) { //获取用户授权后的信息 Set strings = data.keySet(); data.get("profile_image_url"); String temp=""; for(String key: strings ){ temp =temp +key +" :" +data.get(key) +"\n"; } tv_result.setText(temp); } @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(MainActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show(); } }; //A. @Override protected void onActivityResult ( int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } //B.分享的逻辑代码 private UMShareListener shareListener = new UMShareListener() { @Override public void onStart(SHARE_MEDIA platform) { } @Override public void onResult(SHARE_MEDIA platform) { Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show(); } @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(MainActivity.this, "失败" + t.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show(); } }; private void initView() { iv_login = (ImageView) findViewById(R.id.iv_login); iv_share = (ImageView) findViewById(R.id.iv_share); tv_result = (TextView) findViewById(R.id.tv_result); } }
ok搞定