友盟QQ登录分享:
-
需要第三方jar包下载:https://share.weiyun.com/5PUfvYX
-
切记测试设备需安装QQ应用,以免尴尬。
效果图:
1、导入jar包到libs( 右击 add as library)
2、自定义类继承Application并重写onCreate()方法(记得清单文件注册.name)
引入该方法
UMConfigure.init(this,"5a12384aa40fa3551f0001d1","umeng",UMConfigure.DEVICE_TYPE_PHONE,"");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
实现图:记得在清单文件配置
3、清单文件配置即可
<!--权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--"第三方配置"-->
<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:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<meta-data
android:name="UMENG_APPKEY"
android:value="5c07d385f1f556e5f90003c4">
</meta-data>
4、写布局逻辑代码
step布局:
step代码:
/**
*注册监听
*重写点击事件方法
*/
findViewById(R.id.qqlogin).setOnClickListener(this);
findViewById(R.id.qqshare).setOnClickListener(this);
@Override
public void onClick(View v) {
switch (v.getId()) {
/**
* qq登录
*/
case R.id.qqlogin:
UMShareAPI umShareAPI = UMShareAPI.get(MainActivity.this);
/**
* 登录授权监听
*/
umShareAPI.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
}
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
/**
* 登录信息集合
* Log.i("Tag",map+"");
*/
String ion = map.get("profile_image_url");
String name = map.get("screen_name");
Toast.makeText(MainActivity.this, "昵称:" + name, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "头像:" + ion, Toast.LENGTH_SHORT).show();
/**
*ion_qq是图片控件,只是为了验证登录成功后获取到你的QQ头像
*/
Glide.with(MainActivity.this).load(s).into(ion_qq);
}
@Override
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
}
@Override
public void onCancel(SHARE_MEDIA share_media, int i) {
}
});
break;
/**
* qq分享
* 分享监听
*/
case R.id.qqshare:
UMShareListener umShareListener = new UMShareListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
}
@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();
Log.i("xxx", "onError: " + t);
}
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, platform + " 分享取消了", Toast.LENGTH_SHORT).show();
}
};
/**
* 友盟图片
*/
UMImage umImage = new UMImage(MainActivity.this, R.mipmap.ic_launcher);
new ShareAction(MainActivity.this)
.setPlatform(SHARE_MEDIA.QQ)//传入平台
.withMedia(umImage)//分享图片
.setCallback(umShareListener)//回调监听器
.share();
break;
}
}
必须重写(如果用fragment的话,记得在依付的Activity里面重写就行,fragment不执行onActivityResult方法)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(MainActivity.this).onActivityResult(requestCode, resultCode, data);
}