1.下载open-sdk.jar文件和mta_sdk_x.x.x.jar文件拷贝到libs(或lib)目录下
这个链接 很容易的把环境配置好
http://wiki.connect.qq.com/%E5%88%9B%E5%BB%BA%E5%B9%B6%E9%85%8D%E7%BD%AE%E5%B7%A5%E7%A8%8B_android_sdk
2. 配置AndroidManifest
我配置错误
所以我加了Demo中的数据就可以了

    <activity android:exported="true" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.tencent.sample.wxapi.WXEntryActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="sdksample" />
</intent-filter>
</activity>
<receiver android:name="com.tencent.sample.AppRegister" android:permission="com.tencent.mm.plugin.permission.SEND">
<intent-filter>
<action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
</intent-filter>
</receiver>
<activity android:name="com.tencent.connect.avatar.ImageActivity" />
<activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:launchMode="singleTask" android:name="com.tencent.tauth.AuthActivity" 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="tencent222222" />
</intent-filter>
</activity>

3.环境配置好了之后

创建自己的插件

4.

package cn.debi.cordova;
import java.text.SimpleDateFormat; import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast; import com.tencent.tauth.IUiListener;
import com.tencent.tauth.UiError; import com.tencent.tauth.Tencent;
public class qqlogin extends CordovaPlugin{ public static final String APPID ="";
//private static final String APPID = "100363349";
private Tencent mTencent = null;
private CallbackContext mCallbackContext = null; @Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
mCallbackContext=callbackContext; if (action.equals("qqlogins")) {
this.qqLogin(); }else if(action.equals("qqLogout")){
Context context = this.cordova.getActivity().getApplicationContext(); mTencent.logout(context);
mCallbackContext.success(); }
else {
return false;
}
return true;
} public void qqLogin(){
// 创建授权认证信息
final Activity activity = this.cordova.getActivity(); Context context = this.cordova.getActivity().getApplicationContext();
mTencent = Tencent.createInstance(APPID, context); final IUiListener listener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) { } }; this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() { mTencent.login(activity, "all", listener);
}
}); } private class BaseUiListener implements IUiListener { @Override
public void onComplete(Object response) {
String uid=mTencent.getOpenId();
String token=mTencent.getAccessToken();
Log.d("uid111",uid); JSONObject res=new JSONObject();
try { res.put("uid", uid);
res.put("token", token);
mCallbackContext.success(res); } catch (JSONException e) {
// TODO Auto-generated catch block
mCallbackContext.error();
e.printStackTrace();
} } protected void doComplete(JSONObject values) { } @Override
public void onError(UiError e) {
mCallbackContext.error(); } @Override
public void onCancel() { mCallbackContext.error(); } } }

5.qqlogin.js

 var exec = require('cordova/exec');

 exports.getqqlogin = function(messege,success, error) {
exec(success, error, "qqlogin", "qqlogins", [messege]);
};
exports.getqqlogout= function(messege,success, error) {
exec(success, error, "qqlogin", "qqlogout", [messege]);
};

6.plugin.xml

 <?xml version="1.0" encoding="utf-8"?>
<plugin id="cn.debi.cordova" version="0.0.1"
xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<name>qqlogin</name>
<description>Description</description>
<js-module name="qqlogin" src="www/qqlogin.js">
<clobbers target="cordova.plugins.qqlogin"/>
</js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="qqlogin">
<param name="android-package" value="cn.debi.cordova.qqlogin"/>
</feature>
</config-file>
<source-file src="src/android/qqlogin.java" target-dir="src/cn/debi/cordova"/>
</platform>
</plugin>

7.调用

 var extraInfo = cordova.require('cn.debi.cordova.qqlogin');
extraInfo.getqqlogin('cole.log',function(message) {
alert(message);
}, function(message) {
alert(message);
});

8.添加直接插件

cordova plugin add Login_QQ

9.完成

github 地址

qq 登录 cordova插件的更多相关文章

  1. dedecms织梦第三方登录插件-QQ登录、微博登录、微信登录

    织梦程序集成第三方QQ登录.微博登录.微信登录,获取QQ.微博.微信,并存储至数据库,一键注册为网站会员,不用再次填写绑定信息,方便粘贴用户更强. 织梦第三方登录效果 第三方登录插件特点 1.所有文件 ...

  2. cordova插件汇总

    1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin add cordova-plu ...

  3. cordova插件列表

    主要来源为http://blog.csdn.net/github_39500961/article/details/76270299 1.获取当前应用的版本号 cordova plugin add c ...

  4. cordova插件整理

    原文:cordova插件整理 1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin ...

  5. DISCUZ! X2.5设置仅允许QQ登录注册论坛 加固会员注册机制

    论坛稍微有点起色之后,很多站长就会担心论坛经常被人恶意灌水.注册机.顶贴机等等一些列非法的手段.通常站长都会通过一些后台的设置和插件等等一 切有效的方法预防,但更多的站长会通过限制用户注册会员,需注册 ...

  6. ionic2 如何引入第三方cordova插件

    例如:cordova-plugin-wechat 这个插件可以做微信登录,分享支付等 首先第一步:ionic plugin add cordova-plugin-wechat --variable w ...

  7. [Phonegap+Sencha Touch] 移动开发76 让cordova app訪问远端站点也能调用cordova插件功能

    原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50735395 我相信.应该会有一些cordova开发人员想过实现以下这种app: 使用 ...

  8. 帝国CMS QQ登陆接口插件 适用于所有帝国7.2版本

    插件名称:帝国CMS-QQ登录插件 插件作者:帝国CMS官方 插件介绍:帝国CMS系统的QQ登录插件. 官方网站:http://www.phome.net ---------------------- ...

  9. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

随机推荐

  1. 黄聪:VPS实现自动定时备份网站数据以及Mysql数据库到百度云同步盘

    建站多了,备份成了头疼的问题,因为你不知道你的VPS什么时候会宕机或者服务商跑路,一旦网站数据丢失,那么相当于前功尽弃了,所以自己研究出了一套自动备份的方法. 需要的东西: 1.一个VPS(虚拟空间没 ...

  2. scala高级内容(二) - Implicit

    一. Implicit关键字 隐士转换 (1)隐士转换函数:用implicit修饰的,只有一个参数的函数.他会被自动执行,来把一个值转换成另一个 class RichFile(val f:File){ ...

  3. c# 对话框交换数据

    本例是一个管理联系人信息的小程序,程序有两个窗体,一个主窗体,在listview控件中显示联系人信息列表,一个对话框窗体,用来显示和修改 某个联系人的信息.通过主窗体的菜单命令,可以打开对话框,并把主 ...

  4. 三、jdk工具之jstack(Java Stack Trace)

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  5. Yii 框架生成缩略图

    控制器 if($model->load(Yii::$app->request->post()))        { //原图            $model->img = ...

  6. C# Bitmap Save Generic GDI+ Error

    Image.Save 方法 (String) 将该 Image 保存到指定的文件或流. 命名空间:  System.Drawing程序集:  System.Drawing(在 System.Drawi ...

  7. springmvc 中RequestMapping注解的使用

    1.RequestMapping注解既可以修饰方法,又可以修饰类型,类型指定的url相对于web跟路径,而方法修饰的url相对于类url: 2.RequestMapping的几个属性: value:用 ...

  8. 基于spring-redis发布订阅模式的实现

    redis配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  9. go mobile 得生命周期事件

    生命周期事件,就是状态从一个阶段切换成另外一个状态时触发的事件.所以我们可以看到 lifecycle.Event 的定义如下:   生命周期一共有下面四个阶段: lifecycle.StageDead ...

  10. 最大子序列和(O(n))

    下面介绍一个线性的算法,这个算法是许多聪明算法的典型:运行时间是明显的,但是正确性则很不明显(不容易理解). //线性的算法O(N) long maxSubSum4(const vector<i ...