公司最近不景气,辞职后的日子刚开始还挺嗨皮,过两天闲的蛋都碎了,都四月份了,还是领到毕业证在找吧。。。。。。
不扯淡了,项目中经常有第三方等陆或者分享的功能,以下是我用sharesdk实现的步骤。。
1 使用第三方前,导入MainLibs/libs中相应的包,res中的drawble中的图片必须导入到工程中,values中的String.xml中的条目选择自己用到的复制到工程中
2 把assest文件下的ShareSdk.conf拷到assest文件下,里面放置都是各个平台申请的appid
3 在清单中注册时加上demo中的权限,以及复制下面的代码到工程中
<activity android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" >
</activity>
4 各个平台的第三方登录及分享代码,在Shareandthirdlogin工程中的点击事件下均可找到(注意:在oncreate()方法中一定要初始化Sharesdk,添加代码:SharesdkInit(this))
5 此时如果有正确的key,就可以登陆和分享了(应到各开发者平台申请自己应用的key)
代码贡献出来了。。
import java.util.HashMap;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.tencent.qzone.QZone;
import cn.sharesdk.tencent.weibo.TencentWeibo;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
/**
* 使用sharesdk实现第三方登陆及分享
* @author duronggang
* @date 2014-1-23 下午1:55:35
*/
public class MainActivity extends Activity {
private Button qqLoginBt; //qq登陆
private Button sinaLoginBt; //新浪微博登陆
private Button tencentLoginBt; //腾讯微博登陆
private Button qqandqqZoneShareBt; //QQ好友,空间分享
private Button sinaWbShareBt; //新浪微博分享
private Button tencentWbShareBt; //腾讯微博分享
private Button wxShareBt; //微信分享
private Button wxfriendsShareBt; //朋友圈分享
private Button attentionBt; //特别说明
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ShareSDK.initSDK(this); //初始化一定要有,否则会报空指针异常
init();
listener();
}
private void listener() {
// TODO Auto-generated method stub
qqLoginBt.setOnClickListener(l);
sinaLoginBt.setOnClickListener(l);
tencentLoginBt.setOnClickListener(l);
qqandqqZoneShareBt.setOnClickListener(l);
sinaWbShareBt.setOnClickListener(l);
tencentWbShareBt.setOnClickListener(l);
wxShareBt.setOnClickListener(l);
wxfriendsShareBt.setOnClickListener(l);
attentionBt.setOnClickListener(l);
}
public void init()
{
qqLoginBt = (Button) findViewById(R.id.bt_qqlogin);
sinaLoginBt = (Button) findViewById(R.id.bt_sinalogin);
tencentLoginBt = (Button) findViewById(R.id.bt_tencentlogin);
qqandqqZoneShareBt = (Button) findViewById(R.id.bt_qqandqzoneshare);
sinaWbShareBt = (Button) findViewById(R.id.bt_sinashare);
tencentWbShareBt = (Button) findViewById(R.id.bt_tencetwbshare);
wxShareBt = (Button) findViewById(R.id.bt_wxshare);
wxfriendsShareBt = (Button) findViewById(R.id.bt_wxfriendshare);
attentionBt = (Button) findViewById(R.id.bt_attention);
}
OnClickListener l = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.bt_qqlogin:
Platform platQQ = ShareSDK.getPlatform(MainActivity.this, QZone.NAME);
platQQ.setPlatformActionListener(qqlistener);
platQQ.showUser(null); //代表获取自己的授权信息
platQQ.removeAccount();
break;
case R.id.bt_sinalogin:
Platform platsina = ShareSDK.getPlatform(MainActivity.this, SinaWeibo.NAME);
platsina.setPlatformActionListener(sinalistener);
platsina.showUser(null); //代表获取自己的授权信息
platsina.removeAccount();
break;
case R.id.bt_tencentlogin:
Platform platten = ShareSDK.getPlatform(MainActivity.this, TencentWeibo.NAME);
platten.setPlatformActionListener(sinalistener);
platten.showUser(null); //代表获取自己的授权信息
platten.removeAccount();
break;
case R.id.bt_qqandqzoneshare:
QQ.ShareParams qqsp = new QQ.ShareParams();
qqsp.title = "title";
qqsp.text = "share";
qqsp.titleUrl = "http://www.baidu";
// qqsp.shareType = Platform.SHARE_TEXT;
//qqsp.imagePath = "";
// sp.imagePath = “/mnt/sdcard/测试分享的图片.jpg”;
Platform qqs = ShareSDK.getPlatform(MainActivity.this, QQ.NAME);
qqs.setPlatformActionListener(sinalistener); // 设置分享事件回调
// 执行图文分享
qqs.share(qqsp);
break;
case R.id.bt_sinashare:
Platform.ShareParams sp = new SinaWeibo.ShareParams();
sp.text = "分享";
//sp.imagePath ="";
Platform weibo = ShareSDK.getPlatform(MainActivity.this, SinaWeibo.NAME);
weibo.setPlatformActionListener(sinalistener); // 设置分享事件回调
// 执行图文分享
weibo.share(sp);
break;
case R.id.bt_tencetwbshare:
Platform.ShareParams ssp = new TencentWeibo.ShareParams();
ssp.text = "分享";
//ssp.imagePath = "";
Platform tewb = ShareSDK.getPlatform(MainActivity.this, TencentWeibo.NAME);
tewb.setPlatformActionListener(sinalistener);
tewb.share(ssp);
tewb.removeAccount();
break;
case R.id.bt_wxshare:
Wechat.ShareParams wxsp = new Wechat.ShareParams();
//sp.title = ""; //分享的标题
wxsp.text = "分享"; //分享的内容
wxsp.shareType = Platform.SHARE_TEXT; //分享的类别
//sp.imagePath = “/mnt/sdcard/测试分享的图片.jpg”; //要分享的图片路径
Platform wechat = ShareSDK.getPlatform(MainActivity.this, Wechat.NAME);
wechat.setPlatformActionListener(sinalistener); // 设置分享事件回调
// 执行图文分享
wechat.share(wxsp);
break;
case R.id.bt_wxfriendshare:
WechatMoments.ShareParams ps = new WechatMoments.ShareParams();
ps.title = "title";
ps.text = "分享";
ps.shareType = Platform.SHARE_TEXT;
ps.imagePath = "";
// sp.imagePath = “/mnt/sdcard/测试分享的图片.jpg”;
Platform wechats = ShareSDK.getPlatform(MainActivity.this, WechatMoments.NAME);
System.out.println(wechats + "wwwwwwww");
wechats.setPlatformActionListener(sinalistener); // 设置分享事件回调
// wechat.removeAccount(); //用于清除登陆账户
// 执行图文分享
wechats.share(ps);
break;
case R.id.bt_attention:
AlertDialog.Builder zidingyi = new AlertDialog.Builder(MainActivity.this);
zidingyi.setTitle("说明");
View vv = LayoutInflater.from(MainActivity.this).inflate(R.layout.seekbar, null);
zidingyi.setView(vv);
zidingyi.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
zidingyi.show();
break;
}
}
};
PlatformActionListener sinalistener = new PlatformActionListener() {
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
// TODO Auto-generated method stub
System.out.println("授权失败..........");
Message msg = new Message();
msg.obj = arg2;
sharehand.sendMessage(msg);
System.out.println(arg2);
}
@Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
// TODO Auto-generated method stub
System.out.println("onComplete........");
/*使用腾讯微博登陆后获取的用户id和昵称
String tid = arg2.get("openid").toString();
String nickName = arg2.get("name").toString();*/
/*使用新浪微博登陆后获取的用户id和昵称
String sid = arg2.get("id").toString();
String nickName = arg2.get("name").toString();*/
Message msg = new Message();
msg.obj = "yes";
sharehand.sendMessage(msg);
}
@Override
public void onCancel(Platform arg0, int arg1) {
// TODO Auto-generated method stub
}
};
Handler sharehand = new Handler() {
public void handleMessage(android.os.Message msg) {
String isShare = msg.obj.toString();
if ("yes".equals(isShare)) {
Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_LONG).show();
} else
Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_LONG).show();
};
};
/*
* QQ登陆后的监听
*/
PlatformActionListener qqlistener = new PlatformActionListener() {
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
// TODO Auto-generated method stub
System.out.println("onError..........");
}
@Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
// TODO Auto-generated method stub
System.out.println("onComplete........");
String qs = arg0.getDb().getUserId();
Message msg = new Message();
msg.obj = qs;
msg.what = 0;
thirdhand.sendMessage(msg);
}
@Override
public void onCancel(Platform arg0, int arg1) {
// TODO Auto-generated method stub
}
};
Handler thirdhand = new Handler() {
public void handleMessage(Message msg) {
String ss = msg.obj.toString();
if (msg.what == 1) {
Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG);
} else if (msg.what == 0) {
Toast.makeText(MainActivity.this, "QQ登陆成功", Toast.LENGTH_LONG);
}
};
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
更多推荐
用sharesdk第三方等陆或分享到QQ空间,qq好友,微信,朋友圈,新浪微博,腾讯微博等
发布评论