安卓手机qq登录时短信发送失败QQ发送位置的时候老是提示数据获取失败!求解

24688人阅读
【Android进阶旅程】(39)
有时候我们开发的app需要方便用户简单登录,可以让用户使用自己的qq、微信、微博登录到我们自己开发的app。
今天就在这里总结一下如何在自己的app中集成QQ授权登录获取用户信息的功能。
首先我们打开这个网页,点击----&移动应用----&创建应用,成功创建应用后,可以产生我们需要的App ID和App Key,如下图所示:
然后我们需要下载,下载完后解压我们可以得到两个jar包,和一个例子代码,这两个jar包是我们需要导入到自己app中的,它们的名字是:mta-sdk-1.6.2.jar、open_sdk_r5043.jar。
很重要的参考资料是网站上提供的和解压之后的Sample例子代码。
先来看一下demo效果:
接着我们开始集成,在AndroidManifest文件中加入以下内容:
&uses-permission android:name=&android.permission.INTERNET& /&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /&
&application
android:allowBackup=&true&
android:icon=&@drawable/ic_launcher&
android:label=&@string/app_name&
android:theme=&@style/AppTheme& &
android:name=&com.bear.qqlogin.MainActivity&
android:label=&@string/app_name& &
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&/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=&& /&
&/intent-filter&
&/activity&
android:name=&com.mon.AssistActivity&
android:configChanges=&orientation|keyboardHidden|screenSize&
android:theme=&@android:style/Theme.Translucent.NoTitleBar& /&
&/application&
在主程序里面实现登录和获取用户信息,主要起作用的语句:
mTencent.login(MainActivity.this, scope, loginListener); //登录
userInfo = new UserInfo(MainActivity.this, mTencent.getQQToken()); //获取用户信息
userInfo.getUserInfo(userInfoListener);
整体代码如下:
import org.json.JSONO
import android.app.A
import android.content.I
import android.os.B
import android.view.M
import android.view.V
import android.view.View.OnClickL
import android.widget.EditT
import android.widget.T
import com.tencent.connect.UserI
import com.mon.C
import com.tencent.tauth.IUiL
import com.tencent.tauth.T
import com.tencent.tauth.UiE
* 通过调用Tencent类的login函数发起登录/校验登录态。
* 该API具有两个作用:
* (1)如果开发者没有调用mTencent实例的setOpenId、setAccessToken API,
则该API执行正常的登录操作;
* (2)如果开发者先调用mTencent实例的setOpenId、setAccessToken
API,则该API执行校验登录态的操作。如果登录态有效,则返回成功给应用,
如果登录态失效,则会自动进入登录流程,将最新的登录态数据返回给应用
* @author super bear
public class MainActivity extends Activity {
private static final String APPID = &&;
private EditText et1;
private EditText et2;
private Tencent mT //qq主操作对象
private IUiListener loginL //授权登录监听器
private IUiListener userInfoL //获取用户信息监听器
private S //获取信息的范围参数
private UserInfo userI //qq用户信息
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupViews();
initData();
protected void onDestroy() {
if (mTencent != null) {
//注销登录
mTencent.logout(MainActivity.this);
super.onDestroy();
private void setupViews() {
et1 = (EditText) findViewById(R.id.editText1);
et2 = (EditText) findViewById(R.id.editText2);
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
System.out.println(&你点击了使用qq登录按钮&);
findViewById(R.id.button3).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println(&开始获取用户信息&);
userInfo = new UserInfo(MainActivity.this, mTencent.getQQToken());
userInfo.getUserInfo(userInfoListener);
private void initData() {
//初始化qq主操作对象
mTencent = Tencent.createInstance(APPID, MainActivity.this);
//要所有权限,不然会再次申请增量权限,这里不要设置成get_user_info,add_t
scope = &all&;
loginListener = new IUiListener() {
public void onError(UiError arg0) {
// TODO Auto-generated method stub
* 返回json数据样例
* {&ret&:0,&pay_token&:&D3D0FBCDE5&,
* &pf&:&desktop_m_qq--android-2002-&,
* &query_authority_cost&:448,
* &authority_cost&:-,
* &openid&:&015A22DED93BD15E0E6B0DDB3E59DE2D&,
* &expires_in&:7776000,
* &pfkey&:&a716d4141bca0ddb3df1bb9&,
* &msg&:&&,
* &access_token&:&AD2CE6EB45&,
* &login_cost&:499}
public void onComplete(Object value) {
// TODO Auto-generated method stub
System.out.println(&有数据返回..&);
if (value == null) {
JSONObject jo = (JSONObject)
int ret = jo.getInt(&ret&);
System.out.println(&json=& + String.valueOf(jo));
if (ret == 0) {
Toast.makeText(MainActivity.this, &登录成功&,
Toast.LENGTH_LONG).show();
String openID = jo.getString(&openid&);
String accessToken = jo.getString(&access_token&);
String expires = jo.getString(&expires_in&);
mTencent.setOpenId(openID);
mTencent.setAccessToken(accessToken, expires);
} catch (Exception e) {
// TODO: handle exception
public void onCancel() {
// TODO Auto-generated method stub
userInfoListener = new IUiListener() {
public void onError(UiError arg0) {
// TODO Auto-generated method stub
* 返回用户信息样例
* {&is_yellow_year_vip&:&0&,&ret&:0,
* &figureurl_qq_1&:&http:\/\/\/qqapp\/\/015A22DED93BD15E0E6B0DDB3E59DE2D\/40&,
* &figureurl_qq_2&:&http:\/\/\/qqapp\/\/015A22DED93BD15E0E6B0DDB3E59DE2D\/100&,
* &nickname&:&攀爬←蜗牛&,&yellow_vip_level&:&0&,&is_lost&:0,&msg&:&&,
* &city&:&黄冈&,&
* figureurl_1&:&http:\/\/\/qzapp\/\/015A22DED93BD15E0E6B0DDB3E59DE2D\/50&,
* &vip&:&0&,&level&:&0&,
* &figureurl_2&:&http:\/\/\/qzapp\/\/015A22DED93BD15E0E6B0DDB3E59DE2D\/100&,
* &province&:&湖北&,
* &is_yellow_vip&:&0&,&gender&:&男&,
* &figureurl&:&http:\/\/\/qzapp\/\/015A22DED93BD15E0E6B0DDB3E59DE2D\/30&}
public void onComplete(Object arg0) {
// TODO Auto-generated method stub
if(arg0 == null){
JSONObject jo = (JSONObject) arg0;
int ret = jo.getInt(&ret&);
System.out.println(&json=& + String.valueOf(jo));
String nickName = jo.getString(&nickname&);
String gender = jo.getString(&gender&);
Toast.makeText(MainActivity.this, &你好,& + nickName,
Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO: handle exception
public void onCancel() {
// TODO Auto-generated method stub
private void login() {
//如果session无效,就开始登录
if (!mTencent.isSessionValid()) {
//开始qq授权登录
mTencent.login(MainActivity.this, scope, loginListener);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.REQUEST_API) {
if (resultCode == Constants.RESULT_LOGIN) {
Tencent.handleResultData(data, loginListener);
super.onActivityResult(requestCode, resultCode, data);
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
整个android项目下载链接:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:625230次
积分:5989
积分:5989
排名:第3945名
原创:167篇
评论:163条
(3)(5)(3)(1)(20)(1)(12)(6)(4)(5)(13)(20)(18)(5)(3)(9)(1)(2)(1)(6)(15)(10)(1)(4)(2)(2)经验913 米
在线时间4 小时
版本5.1.16
积分 920, 距离下一级还需 1080 积分
积分 920, 距离下一级还需 1080 积分
机型未知设备
签到次数98
MIUI版本5.1.16
本帖最后由 肆個字節 于
08:38 编辑
最新版系统,手机qq最新版本
后台自动登陆,电脑上会显示 手机客户端登陆,然后要打开手机qq 再退出
1、手机qq已经关闭后台消息推送
2、autoruns 自启管家 已经把qq所有的触发事件全部禁用了,还是会启动
3、如果手机qq关闭状态下,开关微信,也会触发!
感觉这是系统的问题
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验9475 米
在线时间955 小时
版本7.6.23
机型小米手机5
签到次数180
MIUI版本7.6.23
通过手机发布
从没遇到过 手机QQ后台自动登录的 不会是在其他地方登录的吧
经验913 米
在线时间4 小时
版本5.1.16
积分 920, 距离下一级还需 1080 积分
积分 920, 距离下一级还需 1080 积分
机型未知设备
签到次数98
MIUI版本5.1.16
从没遇到过 手机QQ后台自动登录的 不会是在其他地方登录的吧
感谢你的回复
但是 是否在异地或别的设备登陆,这个我还是有能力鉴别的,从事IT十来年了
经验9475 米
在线时间955 小时
版本7.6.23
机型小米手机5
签到次数180
MIUI版本7.6.23
感谢你的回复
但是 是否在异地或别的设备登陆,这个我还是有能力鉴别的,从事IT十来年了 ...
如果有了登录提醒 麻烦看看手机的后台有没有QQ进程或者服务出现
经验154589 米
威望2140 米
在线时间0 小时
版本7.6.29
我是大水逼
机型红米手机2-W/C版
签到次数185
MIUI版本7.6.29
通过手机发布
MIUI自启你看了吗,另外微信本身就是随带QQ登录的,你试试解绑QQ
经验1651 米
在线时间297 小时
版本V7.5.9.0.MAACNDE
积分 2221, 距离下一级还需 2779 积分
积分 2221, 距离下一级还需 2779 积分
机型小米手机3/4 WCDMA国际版
签到次数46
MIUI版本V7.5.9.0.MAACNDE
通过手机发布
我的也这样
经验913 米
在线时间4 小时
版本5.1.16
积分 920, 距离下一级还需 1080 积分
积分 920, 距离下一级还需 1080 积分
机型未知设备
签到次数98
MIUI版本5.1.16
如果有了登录提醒 麻烦看看手机的后台有没有QQ进程或者服务出现
每次退出qq我都是按菜单键然后点退出,当然也是拒绝新消息推送的,记得有一次把qq进程都清理掉的,但是后台还是起来了,但是再开qq感觉就像刚开一样的感觉。当电脑上提示qq手机登陆的时候 我直接右键下线,手机立马提醒 qq是否非法登陆要求我去改密码!
经验913 米
在线时间4 小时
版本5.1.16
积分 920, 距离下一级还需 1080 积分
积分 920, 距离下一级还需 1080 积分
机型未知设备
签到次数98
MIUI版本5.1.16
如果有了登录提醒 麻烦看看手机的后台有没有QQ进程或者服务出现
测试了一下,把服务都清空的情况下,当电脑提示手机qq登陆的时候,立马看手机后台,没有进程,但是看到小米手机的同步图标在状态栏一闪而过!不知道有没有关系!!
经验9475 米
在线时间955 小时
版本7.6.23
机型小米手机5
签到次数180
MIUI版本7.6.23
每次退出qq我都是按菜单键然后点退出,当然也是拒绝新消息推送的,记得有一次把qq进程都清理掉的,但是后 ...
QQ确实 有时会自启动 特别是锁定的状态下 所以可能和MIUI的同步唤醒有关
经验913 米
在线时间4 小时
版本5.1.16
积分 920, 距离下一级还需 1080 积分
积分 920, 距离下一级还需 1080 积分
机型未知设备
签到次数98
MIUI版本5.1.16
QQ确实 有时会自启动 特别是锁定的状态下 所以可能和MIUI的同步唤醒有关
我已经明确测试了
手机qq和miui的同步有关系
在设置里关掉miui的同步功能
开关微信也不会唤醒手机qq了,怎么折腾都不会唤醒手机qq了!!
不知道这个问题官方会不会解决!困扰我好长时间了!
MIUI 300周
MIUI 300周更新纪念勋章
MIUI 2000万
MIUI 2000万发烧友纪念勋章
MIUI三周年
MIUI三周年纪念勋章
已关注极客秀微信
小米7周年勋章
2017米粉节晒单赢专属勋章
“澎湃S1 ”芯片纪念勋章
参与活动回帖可得
参与红米Note 4X活动
2017年小金鸡勋章
回复2016年度评选活动贴
圣诞节勋章
参与圣诞活动
APP 1000万
MIUI论坛APP注册用户突破1000万纪念勋章
小火箭勋章
神舟11号 话题活动
内测督查勋章
内测督查员专属勋章
MIUI 3000万
MIUI 3000万发烧友纪念勋章
MIUI 7纪念勋章
小米商城购买纪念勋章
论坛APP购买小米商品获得
解答组专属勋章
解答组专属勋章
小米平板2 Win10 荣誉内测
小米平板2 Win10 荣誉内测
MIUI五周年
MIUI五周年纪念勋章
已关注微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI六周年
MIUI六周年纪念勋章
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号

我要回帖

更多关于 点击发送直接登录 的文章

 

随机推荐