sharesdk分享,自定义代码实现

 公司最近不景气,辞职后的日子刚开始还挺嗨皮,过两天闲的蛋都碎了,都四月份了,还是领到毕业证在找吧。。。。。。

    不扯淡了,项目中经常有第三方等陆或者分享的功能,以下是我用sharesdk实现的步骤。。

 

 

使用第三方前,导入MainLibs/libs中相应的包,res中的drawble中的图片必须导入到工程中,values中的String.xml中的条目选择自己用到的复制到工程中

assest文件下的ShareSdk.conf拷到assest文件下,里面放置都是各个平台申请的appid

在清单中注册时加上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>

各个平台的第三方登录及分享代码,在Shareandthirdlogin工程中的点击事件下均可找到(注意:在oncreate()方法中一定要初始化Sharesdk,添加代码:SharesdkInit(this)

此时如果有正确的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.com";
   // 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;
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值