在QQ登陆测试的时候,刚申请正常登陆,但是由于app未上线,或许是腾讯升级造成的个别时候QQ登陆无法成功会提示下图代码,功能上没啥问题,已经达到 测试效果了。附上腾讯错误代码图(大家测试QQ登陆的时候,包括微博登陆都需要自行申请 AppId 以及AppKey,当然用我的也可以 )

整体的效果图如下,大家

MainActivity:

package com.qiao.thirdpartylogindemo_master2;

import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler.Callback;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.framework.utils.UIHandler;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qzone.QZone;
import cn.sharesdk.tencent.weibo.TencentWeibo;
/**
* 此demo使用第三方登陆,例子比较简单
* @author 有点凉了
*
*/
public class MainActivity extends Activity implements OnClickListener,Callback,PlatformActionListener{
private static final String TAG="MainActivity";
private Button button_main_login;
private Button button_main_restart;
private Button button_main_exit; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ShareSDK.initSDK(this);//初始化shareSdk
setContentView(R.layout.activity_main);
button_main_login = (Button)findViewById(R.id.button_main_login);
button_main_restart=(Button)findViewById(R.id.button_main_restart);
button_main_login.setOnClickListener(this);
button_main_restart.setOnClickListener(this);
findViewById(R.id.button_main_exit).setOnClickListener(this);
findViewById(R.id.button_main_login_weibo).setOnClickListener(this);
findViewById(R.id.button_main_restart_qq).setOnClickListener(this);
} @Override
protected void onDestroy() {
super.onDestroy();
ShareSDK.stopSDK(this);
} @Override
public void onCancel(Platform platform, int action) {
if (action==Platform.ACTION_USER_INFOR) {
UIHandler.sendEmptyMessage(3, this);
}
}
// 如果onComplete()方法被回调,表示授权成功,引导用户进入系统
@Override
public void onComplete(Platform platform, int action, HashMap<String, Object> res) {
if (action ==Platform.ACTION_USER_INFOR) {
UIHandler.sendEmptyMessage(5, this);
login(platform.getName(), platform.getDb().getUserId(), res); Log.i(TAG, "=="+res);
}
} @Override
public void onError(Platform platform, int action, Throwable t) {
if (action==Platform.ACTION_USER_INFOR) {
UIHandler.sendEmptyMessage(4, this);
}
t.printStackTrace();
} @Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case 1:
Toast.makeText(this, "用户信息已存在,正在跳转登录操作…", Toast.LENGTH_SHORT).show();
break;
case 2:
String text = getString(R.string.logining, msg.obj);
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this, "授权操作已取消", Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(this, "授权操作遇到错误,请阅读Logcat输出", Toast.LENGTH_SHORT).show();
break;
case 5:
Toast.makeText(this, "授权成功,正在跳转登录操作…", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return false;
}
// 用户触发第三方登录事件
@Override
public void onClick(View v) {
// Platform pf =null;
switch (v.getId()) {
case R.id.button_main_login:
//(1)直接使用QQ账号登陆
authorize(new QZone(this));//
break;
case R.id.button_main_restart:
Platform pf2=ShareSDK.getPlatform(MainActivity.this,TencentWeibo.NAME);
if (pf2.isValid()) {
pf2.removeAccount();//删除授权信息
}
pf2.setPlatformActionListener(this);
pf2.authorize();
break;
case R.id.button_main_exit:
Platform pf3=ShareSDK.getPlatform(MainActivity.this,TencentWeibo.NAME);
Platform pf5=ShareSDK.getPlatform(MainActivity.this,QZone.NAME);
if (pf3.isValid()) {
pf3.removeAccount();//删除授权信息 }
if (pf5.isValid()) {
pf5.removeAccount();
}
Toast.makeText(this, "退出成功,测试请点击上方登陆按钮,如果出现重新登陆界面则算成功", Toast.LENGTH_LONG).show();
break;
case R.id.button_main_login_weibo:
// (2)、 //使用腾讯微博登陆先要初始化腾讯微博
Platform pf = ShareSDK.getPlatform(MainActivity.this,TencentWeibo.NAME);
pf.SSOSetting(true);
pf.setPlatformActionListener(this);
pf.showUser(null);
Log.i(TAG, "==用户id:" + pf.getDb().getUserId() + " 用户名称:"+ pf.getDb().getUserName() + " 用户icon:"+ pf.getDb().getUserIcon() + " 这个是啥:"+ pf.getDb().getUserGender());
break;
case R.id.button_main_restart_qq:
Platform pf4=ShareSDK.getPlatform(MainActivity.this,QZone.NAME);
if (pf4.isValid()) {
pf4.removeAccount();
}
pf4.setPlatformActionListener(this);
authorize(new QZone(this));
break;
default:
break;
}
}
// authorize()方法将引导用户在授权页面输入帐号密码,然后目标平台将验证此用户(此方法在此例子中仅仅是QQ账号登陆时候使用)
public void authorize(Platform plat){
if (plat.isValid()) {
String userId =plat.getDb().getUserId();//获取id
if (!TextUtils.isEmpty(userId)) {
UIHandler.sendEmptyMessage(1, this);
login(plat.getName(),userId,null);//不等于null执行登陆,讲用户id发送至目标平台进行验证
return;
}
}
plat.setPlatformActionListener(this);
plat.SSOSetting(true);
plat.showUser(null);
}
public void login(String plat,String userId,HashMap<String, Object> userInfo){
Message msg = new Message();
msg.what = 2;
msg.obj = plat;
UIHandler.sendMessage(msg, this);
}
}

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.qiao.thirdpartylogindemo_master2.MainActivity" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> <Button
android:id="@+id/button_main_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_marginTop="30dp"
android:layout_toRightOf="@+id/textView1"
android:text="QQ第三方登陆" /> <Button
android:id="@+id/button_main_restart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button_main_exit"
android:layout_centerHorizontal="true"
android:text="切换微博账号" /> <Button
android:id="@+id/button_main_login_weibo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button_main_login"
android:layout_below="@+id/button_main_login"
android:text="QQ微博账号登陆" /> <Button
android:id="@+id/button_main_exit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/button_main_restart"
android:layout_marginBottom="128dp"
android:text="退出账号" /> <Button
android:id="@+id/button_main_restart_qq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button_main_restart"
android:layout_alignLeft="@+id/button_main_restart"
android:text="切换QQ账号" /> </RelativeLayout>

需要第三方ShareSdk支持

assets文件夹中

<?xml version="1.0" encoding="utf-8"?>
<DevInfor>
<!--
说明: 1、表格中的第一项
<ShareSDK
AppKey="api20" />
是必须的,其中的AppKey是您在ShareSDK上注册的开发者帐号的AppKey 2、所有集成到您项目的平台都应该为其在表格中填写相对应的开发者信息,以新浪微博为例:
<SinaWeibo
Id="1"
SortId="1"
AppKey="568898243"
AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
RedirectUrl="http://www.sharesdk.cn"
Enable="true" />
其中的SortId是此平台在分享列表中的位置,由开发者自行定义,可以是任何整型数字,数值越大
越靠后AppKey、AppSecret和RedirectUrl是您在新浪微博上注册开发者信息和应用后得到的信息
Id是一个保留的识别符,整型,ShareSDK不使用此字段,供您在自己的项目中当作平台的识别符。
Enable字段表示此平台是否有效,布尔值,默认为true,如果Enable为false,即便平台的jar包
已经添加到应用中,平台实例依然不可获取。 各个平台注册应用信息的地址如下:
新浪微博 http://open.weibo.com
腾讯微博 http://dev.t.qq.com
QQ空间 http://connect.qq.com/intro/login/
微信好友 http://open.weixin.qq.com
Facebook https://developers.facebook.com
Twitter https://dev.twitter.com
人人网 http://dev.renren.com
开心网 http://open.kaixin001.com
搜狐微博 http://open.t.sohu.com
网易微博 http://open.t.163.com
豆瓣 http://developers.douban.com
有道云笔记 http://note.youdao.com/open/developguide.html#app
印象笔记 https://dev.evernote.com/
Linkedin https://www.linkedin.com/secure/developer?newapp=
FourSquare https://developer.foursquare.com/
搜狐随身看 https://open.sohu.com/
Flickr http://www.flickr.com/services/
Pinterest http://developers.pinterest.com/
Tumblr http://www.tumblr.com/developers
Dropbox https://www.dropbox.com/developers
Instagram http://instagram.com/developer#
VKontakte http://vk.com/dev
--> <ShareSDK
AppKey = "31a2d4901ac0"/> <!-- 修改成你在sharesdk后台注册的应用的appkey"--> <!-- ShareByAppClient标识是否使用微博客户端分享,默认是false -->
<!-- <SinaWeibo
Id="1"
SortId="1"
AppKey="568898243"
AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
RedirectUrl="http://www.sharesdk.cn"
ShareByAppClient="true"
Enable="true" />
-->
<TencentWeibo
Id="2"
SortId="2"
AppKey="801530433"
AppSecret="3ed1cc342bd5c8871aebb69ef55c5606"
RedirectUri="http://www.baidu.com"
Enable="true" /> <!-- ShareByAppClient标识是否使用微博客户端分享,默认是false -->
<!-- QQ账号登陆测试完成 -->
<QZone
Id="3"
SortId="3"
AppId="1102908041"
AppKey="b70Yvb01LfSqzzKE"
ShareByAppClient="true"
Enable="true" /> <!-- <!--
Wechat微信和WechatMoments微信朋友圈的appid是一样的; 注意:开发者不能用我们这两个平台的appid,否则分享不了 微信测试的时候,微信测试需要先签名打包出apk,
sample测试微信,要先签名打包,keystore在sample项目中,密码123456 BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过
审核的应用也可以执行分享,但是仅限于分享文字和图片,不能分享其他类型,
默认值为false。此外,微信收藏不支持此字段。
-->
<!-- <Wechat
Id="4"
SortId="4"
AppId="wx4868b35061f87885"
BypassApproval="true"
Enable="true" /> <WechatMoments
Id="5"
SortId="5"
AppId="wx4868b35061f87885"
BypassApproval="true"
Enable="true" /> <WechatFavorite
Id="6"
SortId="6"
AppId="wx4868b35061f87885"
Enable="true" /> <QQ
Id="7"
SortId="7"
AppId="100371282"
AppKey="aed9b0303e3ed1e27bae87c33761161d"
Enable="true" /> <Facebook
Id="8"
SortId="8"
ConsumerKey="107704292745179"
ConsumerSecret="38053202e1a5fe26c80c753071f0b573"
Enable="true" /> <Twitter
Id="9"
SortId="9"
ConsumerKey="mnTGqtXk0TYMXYTN7qUxg"
ConsumerSecret="ROkFqr8c3m1HXqS3rm3TJ0WkAJuwBOSaWhPbZ9Ojuc"
CallbackUrl="http://www.sharesdk.cn"
Enable="true" /> <Renren
Id="10"
SortId="10"
AppId="226427"
ApiKey="fc5b8aed373c4c27a05b712acba0f8c3"
SecretKey="f29df781abdd4f49beca5a2194676ca4"
Enable="true" /> <KaiXin
Id="11"
SortId="11"
AppKey="358443394194887cee81ff5890870c7c"
AppSecret="da32179d859c016169f66d90b6db2a23"
RedirectUri="http://www.sharesdk.cn"
Enable="true" /> <Email
Id="12"
SortId="12"
Enable="true" /> <ShortMessage
Id="13"
SortId="13"
Enable="true" /> <SohuMicroBlog
Id="14"
SortId="14"
ApiKey="q70QBQM9T0COxzYpGLj9"
ConsumerKey="q70QBQM9T0COxzYpGLj9"
ConsumerSecret="XXYrx%QXbS!uA^m2$8TaD4T1HQoRPUH0gaG2BgBd"
CallbackUrl="http://www.sharesdk.cn"
Enable="true" /> <NetEaseMicroBlog
Id="15"
SortId="15"
ConsumerKey="T5EI7BXe13vfyDuy"
ConsumerSecret="gZxwyNOvjFYpxwwlnuizHRRtBRZ2lV1j"
RedirectUri="http://www.shareSDK.cn"
Enable="true" /> <Douban
Id="16"
SortId="16"
ApiKey="02e2cbe5ca06de5908a863b15e149b0b"
Secret="9f1e7b4f71304f2f"
RedirectUri="http://www.sharesdk.cn"
Enable="true" /> <YouDao
Id="17"
SortId="17"
HostType="product"
ConsumerKey="dcde25dca105bcc36884ed4534dab940"
ConsumerSecret="d98217b4020e7f1874263795f44838fe"
RedirectUri="http://www.sharesdk.cn"
Enable="true" /> <SohuSuishenkan
Id="18"
SortId="18"
AppKey="e16680a815134504b746c86e08a19db0"
AppSecret="b8eec53707c3976efc91614dd16ef81c"
RedirectUri="http://sharesdk.cn"
Enable="true" /> 在中国大陆,印象笔记有两个服务器,一个是沙箱(sandbox),一个是生产服务器(china)。
一般你注册应用,它会先让你使用sandbox,当你完成测试以后,可以到
http://dev.yinxiang.com/support/上激活你的ConsumerKey,激活成功后,修改HostType
为china就好了。至于如果您申请的是国际版的印象笔记(Evernote),则其生产服务器类型为
“product”。 如果目标设备上已经安装了印象笔记客户端,ShareSDK允许应用调用本地API来完成分享,但
是需要将应用信息中的“ShareByAppClient”设置为true,此字段默认值为false。 <Evernote
Id="19"
SortId="19"
HostType="sandbox"
ConsumerKey="sharesdk-7807"
ConsumerSecret="d05bf86993836004"
ShareByAppClient="false"
Enable="true" /> <LinkedIn
Id="20"
SortId="20"
ApiKey="ejo5ibkye3vo"
SecretKey="cC7B2jpxITqPLZ5M"
RedirectUrl="http://sharesdk.cn"
Enable="true" /> <GooglePlus
Id="21"
SortId="21"
Enable="true" /> <FourSquare
Id="22"
SortId="22"
ClientID="G0ZI20FM30SJAJTX2RIBGD05QV1NE2KVIM2SPXML2XUJNXEU"
ClientSecret="3XHQNSMMHIFBYOLWEPONNV4DOTCDBQH0AEMVGCBG0MZ32XNU"
RedirectUrl="http://www.sharesdk.cn"
Enable="true" /> <Pinterest
Id="23"
SortId="23"
ClientId="1432928"
Enable="true" /> <Flickr
Id="24"
SortId="24"
ApiKey="33d833ee6b6fca49943363282dd313dd"
ApiSecret="3a2c5b42a8fbb8bb"
RedirectUri="http://www.sharesdk.cn"
Enable="true" /> <Tumblr
Id="25"
SortId="25"
OAuthConsumerKey="2QUXqO9fcgGdtGG1FcvML6ZunIQzAEL8xY6hIaxdJnDti2DYwM"
SecretKey="3Rt0sPFj7u2g39mEVB3IBpOzKnM3JnTtxX2bao2JKk4VV1gtNo"
CallbackUrl="http://sharesdk.cn"
Enable="true" /> <Dropbox
Id="26"
SortId="26"
AppKey="7janx53ilz11gbs"
AppSecret="c1hpx5fz6tzkm32"
Enable="true" /> <VKontakte
Id="27"
SortId="27"
ApplicationId="3921561"
Enable="true" /> <Instagram
Id="28"
SortId="28"
ClientId="ff68e3216b4f4f989121aa1c2962d058"
ClientSecret="1b2e82f110264869b3505c3fe34e31a1"
RedirectUri="http://sharesdk.cn"
Enable="true" /> Yixin易信和YixinMoments易信朋友圈的appid是一样的; 注意:开发者不能用我们这两个平台的appid,否则分享不了 易信测试的时候需要先签名打包出apk,
sample测试易信,要先签名打包,keystore在sample项目中,密码123456 BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过
审核的应用也可以执行分享,但是仅限于分享文字或图片,不能分享其他类型,
默认值为false。 <Yixin
Id="29"
SortId="29"
AppId="yx0d9a9f9088ea44d78680f3274da1765f"
BypassApproval="true"
Enable="true" /> <YixinMoments
Id="30"
SortId="30"
AppId="yx0d9a9f9088ea44d78680f3274da1765f"
BypassApproval="true"
Enable="true" /> <Mingdao
Id="31"
SortId="31"
AppKey="EEEE9578D1D431D3215D8C21BF5357E3"
AppSecret="5EDE59F37B3EFA8F65EEFB9976A4E933"
RedirectUri="http://sharesdk.cn"
Enable="true" /> --> </DevInfor>

Mainfest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qiao.thirdpartylogindemo_master2"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<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"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".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>
<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize" />
</application> </manifest>

values:需要(直接ShareSdk拷贝)

jar包直接ShareSdk拷贝:

第三方账号登录--QQ登录,以及QQ微博账号登录的更多相关文章

  1. 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享

    这几天遇到一个需求:做第三方登录和分享.遇到了一些坑,把整个过程整理记录下来,方便他人,同时也捋一下思路. 当时考虑过把每个平台的SDK下载下来,一个一个弄,一番取舍后决定还是用ShareSDK.这里 ...

  2. 【Demo】QQ,github,微博第三方社交登录

    本文主要讲解 集成 第三方社交账号登录 为什么会有这个需求? 主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足 ...

  3. 如何从零开始对接第三方登录(Java版):QQ登录和微博登录

    前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...

  4. Unity利用Share SDK实现QQ、微信及微博第三方登录及定制内容分享(附代码)

    最近因为公司的项目需要添加一些实用性的功能,需要添加第三方登录及分享,采用的是Mob的SDK,可以先到其官网下载对应的SDK 点击这里,为了方便后期进行数据统计和分析,所以可以先添加一个应用,添加成功 ...

  5. 实现第三方登录(QQ、微信、微博)

    第三方登录,就是使用大家比较熟悉的比如QQ.微信.微博等第三方软件登录自己的网站,这可以免去注册账号.快速留住用户的目的,免去了相对复杂的注册流程.下边就给大家讲一下怎么使用PHP开发QQ登录的功能. ...

  6. 前端html第三方登录集合,微信,微博,QQ

    申请开发者账号之内的就不累赘了,网上一大堆: 说下需求,一个网页要在三类容器运行,公司app,微信自动登录,浏览器. 假设是已经申请完成各平台开发者账号. 先来简单的,微博和QQ 微博: 引入微博JS ...

  7. QQ第三方登录逻辑(微信,微博等同)

    实现过程:生成qq扫码登录连接(需要注册,链接里有几个参数需要按照开发文档的格式进行拼接,要后端完成),点击QQ登录按钮,前端Vue发送axios请求,后端收到请求把生成的QQ登录链接发送给vue,v ...

  8. 微信qq,新浪等第三方授权登录的理解

    偶们常说的第三方是指的微信,qq,新浪这些第三方,因为现在基本每个人都有qq或者微信,那么我们就可以通过这些第三方进行登录.而这些网站比如慕课网是通过第三方获取用户的基本信息 它会有个勾选按钮,提示是 ...

  9. 测试面试题集-测试用例设计:登录、购物车、QQ收藏表情、转账、充值、提现

    以下内容首发于微信公众号[ITester软件测试小栈]: 测试面试题集-2.测试用例设计 大家好 我是coco小锦鲤 上周五给大家分享了测试基础理论题 这个周五给大家分享测试用例设计题 测试用例的考察 ...

随机推荐

  1. C#实现数据结构——线性表(下)

    线性表链式存储结构 看了线性表的顺序存储,你肯定想线性表简是挺简单,但是我一开始怎么会知道有多少人排队?要分配多大的数组?而且插入和删除一个元素也太麻烦了,所有元素都要前移/后移,效率又低. 那怎么办 ...

  2. C++ STL之pair常用指令

    只记载本人在ACM中常用的函数. pair<first, second>,将两个数据组合成一个数据.在其他stl(如map),函数需要传回两个值时可能会用到. 1.初始化 #include ...

  3. Appium 环境搭建

    1.安装nodejs 下载地址: http://nodejs.org/download/ 下载之后一路next就好. 验证是否安装成功: node -v

  4. E - QS Network - zoj 1586(简单)

    题意:在一个叫做QS的星系,他们使用一些特殊的通讯方式,两个人之间通讯需要使用一个网络适配器,但是一个网络适配器只能跟一个人联系,所有它连接几个人就需要及格适配器,而且每个人都有一些不同的偏好,喜欢的 ...

  5. android 回调机制实例!

    详细实现为在类中定义接口.在接口的实现方法中传入參数(也能够不传). 在调用类中传入新建的接口.并实现未实现的方法. public class CallBackClass { //传入对应的接口作为參 ...

  6. Android 使用 RemoteViews 发送自定义通知 ,遇到 Couldn't expand RemoteViews问题总结

    在RemoteViews这种调用方式中,你只能使用以下几种界面组件: Layout:     FrameLayout, LinearLayout, RelativeLayout Component: ...

  7. 二维码_encode与decode

    二维码encode和decode工具类 import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.Buffere ...

  8. jquery图片滚动

    注:代码来自17sucai网,已去除部分冗余代码,只保留图片效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  9. [转] java中注解的使用与实例

    注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁. 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致.Java S ...

  10. 两台Linux机之间传送文件

    最近实验室里接管了一台服务器,经常需要用到服务器与自己主机之间进行文件传输,因此,在此介绍一下两台Linux主机之间的一些操作,方便后来者. 1. Linux.Windows主机远程访问Linux服务 ...