详解android在mob平台实现qq登陆和分享

个人感觉mob平台功能还是比较强大的,很多功能都可以通过他们平台来实现。

建议仔细观看每一个步骤,如果一个步骤没处理好,可能就会让你的这个功能无法实现。相信我一定可以成功的
废话少说,先看一下效果:

1.在mob平台配置ShareSDK环境

1.如何在mob平台创建应用

下面为我创建的应用,如图所示,我们选择接入的接口为ShareSDK

2.获取你的App KeyApp Secret(建议用自己的)

获取你先创建应用的App Key和App Secret,这里主要告诉你在哪里找App Key和App Secret,因为等下需要用到。

3.点击SDK下载

4.选择ShareSDK

选择配置我们主要选择下方配置,然后点击保存配置(下面我会说明为什么只选择这些配置)

5.点击下载,就会弹出下载提示

6.关于为什么只选择这些配置?

可以从上图中看出,无论是QQ还微博,微信等都需要获取他们平台的appId和appKey如果你直接使用平台的提供的appId和appKey是不能成功的。如果我想要实现这些功能,我们得先去那些平台获取他的appId和appKey。

7.我创建的QQ开发者平台应用

下面是我创建成功的应用,说实话QQ的这个服务确实挺慢的,一般审核需要几天,可以是免费的原因吧。下面是创建应用的步骤。
1.成为个人开发者。
2.创建移动应用。

2.把ShareSDK部署到android

1.新建一个moudle或者project

这个就不细说,比较简单。

2.配置你的build.gradle(Project)文件

如图所示,添加如图代码:

代码如下:

classpath "com.mob.sdk:MobSDK:2018.0319.1724"

3.配置你的build.gradle(Module)文件

1.首先加入如图代码

根据你的情况选择
代码如下,因为我的版本是android studio 4.2最新版,加入方法如下:

id 'com.mob.sdk'

如果是其他android studio 3点多的版本,添加方法代码:

apply plugin:'com.mob.sdk'

2.其次加入下图代码

加入代码如下(建议使用自己申请的appId和appKey,如果你使用的是我QQ申请的appId和appKey话,你是成功不了,关于为什么成功不了,我下面将会说明):

    MobSDK {
        fp true //严格模式
    }

    MobSDK {
        appKey "31c48ca47c70e"
        appSecret "2d7adbfcd73363bbbe41aeff60e41e4f"
        ShareSDK {
            loopShare true
            devInfo {
                SinaWeibo {
                    appKey "568898243"
                    appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
                    callbackUri "http://www.sharesdk.cn"
                }
                QQ {
                    appId "101906011"
                    appKey "676d885e518445fed4d7d2341ff2d56f"
                }
                TencentWeibo {
                    appKey "801307650"
                    appSecret "ae36f4ee3946e1cbb98d6965b0b2ff5c"
                    callbackUri "http://www.sharesdk.cn"
                }
                QZone {
                    appId "100371282"
                    appKey "aed9b0303e3ed1e27bae87c33761161d"
                }
            }
        }
    }

3. 解释一下关于为什么成功不了

下面我创建的应用

我们可以看一下在QQ平台创建的应用包名和应用签名如下

然后我们在把他和我创建的android项目来对比一下
1.我的包名和他相同

2.我们可以看一下我们的MD5是否相同
第一步:如果查看你的项目的MD5
找到图中的gradle

点击图中红色圆圈处

然后就可以查看MD5了

第二步:将我的MD5的去掉':号',把大写改为小写,我们对比一下是相同的。

补充条件小彩蛋:如果你新建其他项目android项目的时候需要用到QQ的appId和appKey的话,你可以直接点击下图中的修改,修改你为你新项目的包名和MD5。

即可直接进行修改

4.配置你的AndroidManifest.xml文件

加入如图回调和权限

代码如下:

权限:

    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <!-- 蓝牙分享所需的权限 -->
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

回调代码:

 <activity
     android:name="com.mob.tools.MobUIShell"
     android:theme="@android:style/Theme.Translucent.NoTitleBar"
     android:configChanges="keyboardHidden|orientation|screenSize"
     android:screenOrientation="portrait"
     android:windowSoftInputMode="stateHidden|adjustResize"
     tools:ignore="LockedOrientationActivity">
     <!-- QQ和QQ空间分享 QQ登录的回调必须要配置的 -->
     <intent-filter>
         <data android:scheme="tencent101906011" />
         <action android:name="android.intent.action.VIEW" />
         <category android:name="android.intent.category.BROWSABLE" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>

     <!-- 新浪微博客户端分享回调必须配置 -->
     <intent-filter>
         <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
 </activity>

注意事项
记得把如图红色圆圈处的101906011改为你的QQ平台创建的应用申请的appId。

5.配置activity.xml文件。

比较简单,主要添加几个控件用来接收数据

代码如下

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="名字"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="@+id/imageView"
        app:layout_constraintStart_toStartOf="@+id/imageView"
        app:layout_constraintTop_toBottomOf="@+id/imageView"></TextView>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="340dp"
        android:text="QQ登录"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.476"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dp"
        android:src="@mipmap/ic_launcher_round"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="性别"
        app:layout_constraintEnd_toEndOf="@+id/text"
        app:layout_constraintStart_toStartOf="@+id/text"
        app:layout_constraintTop_toBottomOf="@+id/text" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:text="QQ分享"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button" />
</androidx.constraintlayout.widget.ConstraintLayout>

6.配置Activity.java文件

1.记得把MobSDK.init里面的AppKey和AppSecret改为你自己申请你的。

2.qq登录代码

Platform qq = ShareSDK.getPlatform(QQ.NAME);
qq.SSOSetting(false); // 设置false表示使用SSO授权方式
qq.authorize();

thirdLoginId = qq.getDb().getUserId();
name = qq.getDb().getUserName();
image = qq.getDb().getUserIcon();
sex = qq.getDb().getUserGender();
Toast.makeText(MainActivity.this,"name="+image,Toast.LENGTH_LONG).show();
TextView textView=findViewById(R.id.text);
textView.setText(name);
Log.e("Toast","image="+thirdLoginId);
ImageView imageView=findViewById(R.id.imageView);
Glide.with(MainActivity.this)
       .load(image)
       .into(imageView);
TextView textView1=findViewById(R.id.textView);
if(sex!=null){
   if(sex=="m"){
       sex= "男";
   }else {
       sex="女";
   }
}
textView1.setText(sex);

记得导入Glide依赖,因为获取的图片地址为网络图片地址

implementation 'com.github.bumptech.glide:glide:4.11.0'

3.qq分享代码

 OnekeyShare oks = new OnekeyShare();
// title标题,微信、QQ和QQ空间等平台使用
 oks.setTitle("分享");
// titleUrl QQ和QQ空间跳转链接
 oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平台都需要这个字段
 oks.setText("我是分享文本");
// setImageUrl是网络图片的url
 oks.setImageUrl("https://hmls.hfbank.com.cn/hfapp-api/9.png");
// url在微信、Facebook等平台中使用
 oks.setUrl("http://sharesdk.cn");
// 启动分享GUI
 oks.show(MobSDK.getContext());

4.总体代码

package com.example.mobsharetest;

import androidx.appcompat.app.AppCompatActivity;

import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.mob.MobSDK;

import org.w3c.dom.Text;

import java.util.HashMap;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qq.QQ;

public class MainActivity extends AppCompatActivity {
    private Button button;
    private Button button2;
    String thirdLoginId;
    String name;
    String image;
    String sex;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MobSDK.init(this, "31c48ca47c70e","2d7adbfcd73363bbbe41aeff60e41e4f");
        MobSDK.submitPolicyGrantResult(true, null);
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Platform qq = ShareSDK.getPlatform(QQ.NAME);
                qq.SSOSetting(false); // 设置false表示使用SSO授权方式
                qq.authorize();

                thirdLoginId = qq.getDb().getUserId();
                name = qq.getDb().getUserName();
                image = qq.getDb().getUserIcon();
                sex = qq.getDb().getUserGender();
                Toast.makeText(MainActivity.this,"name="+image,Toast.LENGTH_LONG).show();
                TextView textView=findViewById(R.id.text);
                textView.setText(name);
                Log.e("Toast","image="+thirdLoginId);
                ImageView imageView=findViewById(R.id.imageView);
                Glide.with(MainActivity.this)
                        .load(image)
                        .into(imageView);
                TextView textView1=findViewById(R.id.textView);
                if(sex!=null){
                    if(sex=="m"){
                        sex= "男";
                    }else {
                        sex="女";
                    }
                }
                textView1.setText(sex);
            }
        });

        button2=findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OnekeyShare oks = new OnekeyShare();
// title标题,微信、QQ和QQ空间等平台使用
                oks.setTitle("分享");
// titleUrl QQ和QQ空间跳转链接
                oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平台都需要这个字段
                oks.setText("我是分享文本");
// setImageUrl是网络图片的url
                oks.setImageUrl("https://hmls.hfbank.com.cn/hfapp-api/9.png");
// url在微信、Facebook等平台中使用
                oks.setUrl("http://sharesdk.cn");
// 启动分享GUI
                oks.show(MobSDK.getContext());
            }
        });
    }

}

步骤有点复杂,因为这个功能确实比较难以实现,如果有什么问题的话,可以提出来,一不小心就写14000多个字了

以上就是详解android在mob平台实现qq登陆和分享的详细内容,更多关于android在mob平台qq登陆和分享的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android第三方登录之腾讯QQ登录的实例代码

    布局文件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录成功" android:textSize="25sp" android:layout_marginTop="100dp" /> 清单文件中的配置 <activity android:n

  • Android实现QQ登录功能

    QQ登录是一个非常简单的一个第三方应用,现在,我们就来实现一个QQ登录 首先下载两个jar包   这里上传不了jar包,所以可以到我的github中下载工程中libs中的两个jar包 网址:https://github.com/chengzexiang/qqlogin 打代码前,先把这些东西写上: private static final String TAG = "MainActivity"; private static final String APP_ID = "11

  • Android 实现微信,微博,微信朋友圈,QQ分享的功能

    Android 实现微信,微博,微信朋友圈,QQ分享的功能 一.去各自所在的开发者平台注册相应的Key值:引入相关jar包.权限等 二.ShareUtil工具类 import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bit

  • Android第三方登录之QQ登录

    本文实例为大家分享了Android第三方登录之QQ的具体代码,供大家参考,具体内容如下 第三方登录之QQ 代码区 public class MainActivity extends AppCompatActivity { private Button btn; private TextView tv; private ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCr

  • Android Studio实现简单的QQ登录界面的示例代码

    一.项目概述 QQ是我们日常生活使用最多的软件之一,包含登录界面和进入后的聊天界面.好友列表界面和空间动态界面等.登录界面的制作比较简单,主要考验布局的使用,是实现QQ项目的第一步.现在APP开发的首要工作都是实现登录页面,所以学会了QQ登录界面对以后的软件开发有着很重要的作用. 二.开发环境 三.详细设计 1.头像设计 首先在layout文件里面选择了RelativeLayout(相对布局)作为整个页面的布局. 在顶端放置了一个ImageView控件,宽度和高度设置的都是70dp,水平居中设置

  • Android Studio实现第三方QQ登录操作代码

    来看看效果图吧     http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 下载SDKJar包 接下来就可以 实现QQ登录了, 新建一个项目工程 ,然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中 导入一个下面架包就可以 项目结构如下 打开我们的清单文件Androidmanifest 在里面加入权限和注册Activity 如下 <?xml version="1.0" encoding

  • 详解android在mob平台实现qq登陆和分享

    个人感觉mob平台功能还是比较强大的,很多功能都可以通过他们平台来实现. 建议仔细观看每一个步骤,如果一个步骤没处理好,可能就会让你的这个功能无法实现.相信我一定可以成功的. 废话少说,先看一下效果: 1.在mob平台配置ShareSDK环境 1.如何在mob平台创建应用 下面为我创建的应用,如图所示,我们选择接入的接口为ShareSDK 2.获取你的App Key和App Secret(建议用自己的) 获取你先创建应用的App Key和App Secret,这里主要告诉你在哪里找App Key

  • 详解Android Studio中Git的配置及协同开发

    一. Android Stutio配置git setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置,这个Stutio一般会默认配置好: 配置完路径后点击后面的Test按钮,出现下面提示框则表示配置成功: 二. 将项目分享到github 1. 设置github账号密码 打开Setting–>Version Control–>GitHub,填写完账号密码后,点击Test测试,如果连接成功会弹出如下提示

  • 详解Android Automotive车载应用对驾驶模式Safe Drive Mode的适配

    前言 最近在Android Automotive 上遇到的一些问题,有好几个都跟Android 车载操作系统上应用的驾驶模式有关,国内这方面的资料很少,自己在这里总结一下相关的知识,主要包含下面几个方面: Android Automotive 和 Android Auto的区别 Android Automotive 的驾驶模式介绍 Android Automotive 实现驾驶模式的几种实现方式和代码示例,以及实现效果 主要是还是想总结一下Android 车载应用对Automotive 驾驶模式

  • 详解Android应用沙盒机制

    前言 Android使用沙盒来保护用户不受恶意应用的侵害,同时也将应用隔离开来,防止他们互相访问其数据,本文主要对Android应用沙盒中的几种技术做简要的总结. 一.Android应用DAC沙盒 稍微了解Android一点的人都知道,Android上的App并不像Linux上的用户程序那样,启动应用的uid默认就是登录用户的uid,除非你使用sudo或者setuid等机制.而是每个Android应用都对应了一个uid,也就是一个用户,通过Linux系统的DAC机制将应用的数据严格隔离开来. A

  • 详解Android studio实现语音转文字功能

    目录 一.在科大讯飞的官网上注册并下载SDK 二.配置安卓项目 三.运行效果展示 一.在科大讯飞的官网上注册并下载SDK 1.首先去讯飞开放平台申请一个账号(https://www.xfyun.cn/),然后点击“控制台”进入新的页面,创建一个应用,找到“语音听写”,下载相应的SDK. 文件解压后内容如下: 二.配置安卓项目 1.在android studio中新建一个空项目,将libs文件夹中的内容复制到安卓项目的libs文件夹下,其中msc.jar要右键添加Add As Library: 2

  • 详解Android中Intent对象与Intent Filter过滤匹配过程

    如果对Intent不是特别了解,可以参见博文<详解Android中Intent的使用方法>,该文对本文要使用的action.category以及data都进行了详细介绍.如果想了解在开发中常见Intent的使用,可以参见<Android中Intent习惯用法>. 本文内容有点长,希望大家可以耐心读完. 本文在描述组件在manifest中注册的Intent Filter过滤器时,统一用intent-filter表示. 一.概述 我们知道,Intent是分两种的:显式Intent和隐式

  • 详解Android Webview加载网页时发送HTTP头信息

    详解Android Webview加载网页时发送HTTP头信息 当你点击一个超链接进行跳转时,WebView会自动将当前地址作为Referer(引荐)发给服务器,因此很多服务器端程序通过是否包含referer来控制盗链,所以有些时候,直接输入一个网络地址,可能有问题,那么怎么解决盗链控制问题呢,其实在webview加载时加入一个referer就可以了,如何添加呢? 从Android 2.2 (也就是API 8)开始,WebView新增加了一个接口方法,就是为了便于我们加载网页时又想发送其他的HT

  • 详解Android获得系统GPU参数 gl.glGetString

    详解Android获得系统GPU参数 gl.glGetString 通过文档的查找,以及源码的剖析,Android的GPU信息需要通过OpenGL来获取,android framework层提供GL10来获取相应的参数,而GL10要在使用自定义的View时才可以获得,下面是获得GPU信息的例子: 1.实现Render类 class DemoRenderer implements GLSurfaceView.Renderer { public void onSurfaceCreated(GL10

  • 详解Android通过修改配置文件设置wifi密码

    详解Android通过修改配置文件设置wifi密码 前言: 在一些非常规Android设备上,如眼镜/手表,输入wifi密码如同一场灾难.此时可以通过修改配置文件的方法设置wifi的ssid和密码. wifi密码配置文件 首先要保证设备已经root,wifi的配置文件在/data/misc/wifi/wpa_supplicant.conf,可以先将其pull出来,然后在下面加上network开头的那部分就ok了.然后再导入进去.下面是我的配置文件: ##### wpa_supplicant co

  • 详解Android更改APP语言模式的实现过程

    一.效果图 二.描述 更改Android项目中的语言,这个作用于只用于此APP,不会作用于整个系统 三.解决方案 (一)布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a

随机推荐