1. 程式人生 > >用sharesdk第三方等陸或分享到QQ空間,qq好友,微信,朋友圈,新浪微博,騰訊微博等

用sharesdk第三方等陸或分享到QQ空間,qq好友,微信,朋友圈,新浪微博,騰訊微博等

   公司最近不景氣,辭職後的日子剛開始還挺嗨皮,過兩天閒的蛋都碎了,都四月份了,還是領到畢業證在找吧。。。。。。

    不扯淡了,專案中經常有第三方等陸或者分享的功能,以下是我用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;
 }
}