用sharesdk第三方等陸或分享到QQ空間,qq好友,微信,朋友圈,新浪微博,騰訊微博等
公司最近不景氣,辭職後的日子剛開始還挺嗨皮,過兩天閒的蛋都碎了,都四月份了,還是領到畢業證在找吧。。。。。。
不扯淡了,專案中經常有第三方等陸或者分享的功能,以下是我用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 各個平臺的第三方登入及分享程式碼,在
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.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;
}
}