1.布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:src="@mipmap/ic_launcher"/><Buttonandroid:id="@+id/qq_dl"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="qq登录"android:layout_gravity="center"android:layout_marginTop="200dp"/><Buttonandroid:id="@+id/qq_share"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="分享"android:layout_gravity="center"/></LinearLayout>

2.主页面  继承 Onclick

package com.bw.ymy.qqdenglu;import android.Manifest;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;import java.util.Map;public class MainActivity extends AppCompatActivity implements View.OnClickListener
{private Button qq_dl,qq_share;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取资源idqq_dl=findViewById(R.id.qq_dl);qq_share=findViewById(R.id.qq_share);qq_dl.setOnClickListener(this);qq_share.setOnClickListener(this);//  checkPermission();}/*** 动态添加权限,模拟器Android版本小于6.0的不用写,再有问的打死*//*  private void checkPermission() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};ActivityCompat.requestPermissions(this, mPermissionList, 123);}}*//*** 动态添加权限回调,模拟器Android版本小于6.0的不用写,再有问的打死*/@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);}@Overridepublic void onClick(View v) {switch (v.getId()){case  R.id.qq_share://分享用的图片UMImage image=new UMImage(MainActivity.this,R.drawable.umeng_socialize_qq);new ShareAction(MainActivity.this)//分享是的标题.withText("hello")//分享的图片.withMedia(image)//分享到QQ  分享到哪里 在后面添加.setDisplayList(SHARE_MEDIA.QQ).setCallback(shareListener)//打开分享面板.open();break;case  R.id.qq_dl:UMShareAPI umShareAPI=UMShareAPI.get(MainActivity.this);//开始登录//第一个参数:上下文//第二个参数,登录哪种平台//第三个参数,添加回调umShareAPI.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {@Overridepublic void onStart(SHARE_MEDIA share_media) {//跳转Intent intent=new Intent(MainActivity.this,Main2Activity.class);startActivity(intent);}@Overridepublic void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {//头像,昵称,如果拿不到,自己debug看Key是啥,再问打死Log.i("dj", "UMAuthListener onComplete");String name=map.get("scrren_name");String img=map.get("profile_image_url");Log.i("dj", "name is "+ name);Log.i("dj", "img is "+ img);}//登录失败@Overridepublic void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {Log.i("dj", "UMAuthListener onError" + throwable.getLocalizedMessage());}//登录取消@Overridepublic void onCancel(SHARE_MEDIA share_media, int i) {Log.i("dj", "UMAuthListener onCancel");}});break;default:break;}}private  UMShareListener shareListener=new UMShareListener() {@Override//分享开始的回调public void onStart(SHARE_MEDIA share_media) {}//分享成功的回调@Overridepublic void onResult(SHARE_MEDIA share_media) {}/*** @descrption 分享失败的回调**/@Overridepublic void onError(SHARE_MEDIA share_media, Throwable throwable) {}//取消的回调@Overridepublic void onCancel(SHARE_MEDIA share_media) {}};//这一步不写,获取不到头像以及昵称@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);}}

3.APPLication

package com.bw.ymy.qqdenglu;import android.app.Application;import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;public class MyApplication extends Application {/*** 第一步:导入jar包和res文件,将jar包add as lib..* 第二步:自定义Application 在onCreate中完成以下两行代码(所有参数没有自己注册过不要改)* 第三步:在Manifests中添加配置,详见Manifests注释(不要随意修改)* 第四步:在需要调用的地方写调用,详见MainActivity中*/@Overridepublic void onCreate() {super.onCreate();//UMConfigure  报红  在 build 写上3个SDKUMConfigure.init(this,"5a12384aa40fa3551f0001d1","umeng",UMConfigure.DEVICE_TYPE_PHONE,"");PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");}
}

4.清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.bw.ymy.qqdenglu"android:versionCode="1"android:versionName="1.0"><!-- 1.添加以下权限 --><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" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.INTERNET" /><applicationandroid:name=".MyApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 3.写以下两个activity --><activityandroid: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><activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><!-- 3.写以下配置 --><meta-dataandroid:name="UMENG_APPKEY"android:value="5c07d385f1f556e5f90003c4"></meta-data><activity android:name=".Main2Activity"></activity></application></manifest>

5.biulad.grase

apply plugin: 'com.android.application'android {compileSdkVersion 28defaultConfig {applicationId "com.bw.ymy.qqdenglu"minSdkVersion 15targetSdkVersion 28versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}//导入的  必写signingConfigs {debug {storeFile file('debug.keystore')storePassword "android"keyAlias "androiddebugkey"keyPassword "android"}}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])//noinspection GradleCompatibleimplementation 'com.android.support:appcompat-v7:28.0.0'implementation 'com.android.support.constraint:constraint-layout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.2'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'//3个SDKimplementation 'com.umeng.sdk:common:latest.integration'implementation 'com.umeng.sdk:analytics:latest.integration'implementation files('libs/umeng-share-core-6.9.4.jar')}
}dependencies {implementation 'com.android.support.constraint:constraint-layout:+'
}

6.libs导入

7  .build.grade   详见图5

友盟第三方QQ登录分享相关推荐

  1. 友盟第三方QQ登录,报错注意,使用友盟社会化组件的微博SSO功能,需要按照文档要求在xcode设置url scheme!

    错误信息: ------------------------------------------ ------------------------------------------ 注意,使用友盟社 ...

  2. 集成友盟第三方实现QQ微信登录遇到的坑

    最近项目集成友盟第三方实现QQ微信登录,在集成实现过程中遇到了一些问题,也对这些问题提出一些自己的解决办法: 集成的过程不就提了,直接上问题: 一.微信登录提示"授权失败,请查看log&qu ...

  3. 友盟第三方登录精简版QQ遇到的坑

    这几天在项目中集成了友盟第三方登录,完成以后微信和微博基本都没什么问题,只有QQ遇到的问题比较烦人.具体的集成步骤我不在此赘述,官方文档上有,而且已经有不少介绍的很详细的文章.个人遇到问题可能不同,此 ...

  4. (0013)iOS 开发之集成友盟第三方登录

    第三方登录的原理和流程 用户采用第三方登录的时候,用户会发送哪些信息到我的后台,后台会进行哪些比对操作?首次使用第三方登录和再次使用第三方登录时验证有哪些不同,后台如何保存用户的登录信息尼? 对于用户 ...

  5. 友盟第三方登录 无法切换账号 退出 取消授权

    友盟第三方登录后,哪怕你卸载了微博/qq这些客户端,你点击上次登录的方式还是能正常登录的,不需要重新授权..导致一个问题,比如我先用这个QQ登录 后,想换另外一个QQ登录会导致无法登录,哪怕退出QQ, ...

  6. Android第三方QQ登录、获取个人信息、分享实现

    昨天调试了一下午终于成功 第三方QQ登录.获取个人信息,分享 QQ官方API文档写的太乱 并且很多地方没有更新 这里总结一下 方便记录和回看 实现结果图 首先进入腾讯开放平台 下载QQ的SDK 地址 ...

  7. QQ 登录/分享接入流程

    移动 App 接入 QQ 登录/分享流程 这里先要提两个平台,腾讯开放平台和 QQ 互联平台: (一)腾讯开放平台 官网地址:https://open.tencent.com/ 介绍:腾讯开放平台是腾 ...

  8. Android接入第三方QQ登录

    Android接入第三方QQ登录 前言 开始接入 1. 添加依赖 2.AndroidManifest.xml配置 3.初始化SDK 4.创建实例 5.实现回调 6. 调用QQ登录接口 7.获取用户信息 ...

  9. SpringBoot+Vue实现第三方QQ登录(一)

    1. QQ登录介绍(测试网站:地址) QQ互联开放平台为第三方网站提供了丰富的API(官网地址: QQ互联官网首页).第三方网站接入QQ互联开放平台后,即可通过调用平台提供的API实现用户使用QQ帐号 ...

最新文章

  1. C/C++结构体struct 与结构体数组和枚举型enum的结合使用
  2. python解释器调用_python入门-python解释器执行
  3. SAP CRM WebClient UI recent object的后台存储实现
  4. 发现asp.net 2.0 在MSDN中的多个BUG 关于无刷新窗体的
  5. [转载]Spring配置文件详解一:
  6. linux系统分两种更普遍的包,rpm和tar,这两种安装包如何解压与安装
  7. 将JSON转成DataSet(DataTable)
  8. 500 内部服务器错误php,如何解决php 500 - 内部服务器错误
  9. VC++6.0 单步调试
  10. 外星人电脑为什么那么贵_为什么系统门窗那么贵?
  11. 富士驱动器ALPHA5手动JOG运行操作
  12. Cesium中如何获取鼠标单击位置的经纬度
  13. Ubuntu开机后nvidia-smi英伟达驱动消失,或_解决更改内核无效的问题。
  14. Kotlin Sealed 是什么?为什么 Google 都用
  15. origin如何绘制双y轴曲线_origin怎样画双y轴 看完恍然大悟
  16. Cannot Resolve method subscribe(anonymous org.reactivestreams.Subscriber 已解决
  17. 数据库中内连接、外连接、全连接
  18. SPH实践之WCSPH两问题
  19. 【模型库】六足球形机器人三维模型+urdf文件
  20. 论文指标评价体系及权重计算

热门文章

  1. 变量与指针、取值符与取地址符
  2. m4a转mp3简单的音频转换方法?
  3. Oracle-使用XTTS方式迁移11G到PDB数据库
  4. WebGIS学习资源推荐(包含学习路线、软件和数据资源推荐)
  5. ActiveX控件的MFC设计之旅-第15步
  6. 《网络安全》课程教案
  7. 我赌你的电脑里肯定有漏洞—不信测测看
  8. 盘点机数据怎么转换成电脑盘点系统的数据
  9. [木野狐]ViewState 剖析(翻译兼笔记)
  10. 插入排序(Insertion Sort)