sharesdk分享,自定义代码实现
公司最近不景气,辞职后的日子刚开始还挺嗨皮,过两天闲的蛋都碎了,都四月份了,还是领到毕业证在找吧。。。。。。
不扯淡了,项目中经常有第三方等陆或者分享的功能,以下是我用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.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;
}
}
sharesdk分享,自定义代码实现相关推荐
- PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法,php/thinkphp实现微信分享自定义文字和图片...
PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法, php/thinkphp实现微信分享自定义文字和图片. 一.先看微信JS-SDK文 ...
- 基于静态URL的微信分享自定义缩略图及标题和摘要
在静态页中实现微信分享自定义缩略图比动态页分享要复杂.下面是示例页面: 分享的效果(缩略图及标题.摘要是自己指定): 实现难点: (1)URL是变化的,我们分享一次后,微信会自动在分享的地址后增加了一 ...
- Xcode12.5的自定义代码块的使用和函数注释(学会事半功倍)
Xcode12.5的自定义代码块的使用和函数注释(学会事半功倍) 第一篇 快捷键的定义 @property (nonatomic , strong) <#type#> <#name# ...
- 在HTTPS网站安装百度分享按钮代码及其SEO外链作用
百度分享按钮,可以帮用户实现一键将网站内容分享到第三方网站,但它的功能与作用远远不止便于分享. 今天,小小课堂网为大家带来的是百度分享按钮代码安装及对网站SEO优化外链的效果.希望对大家有所帮助. 一 ...
- sharesdk分享qq空间-错误码1001
使用sharesdk登录和分享的时候有时候会遇到错误码:1001的问题. 我再遇到1001错误的时候,是通过处理设置的参数搞定的. 应该注意一下几点: 1.url中有空格 2.文本信息过长 3.设置图 ...
- 通过第三方平台shareSDK分享链接
在实际的项目开发中,需要用到分享功能,一方面可以通过其他App将自己的发现和兴趣等进行分享,展示好的创意.想法,另一方面可以通过分享功能为当前正在使用的App进行推广,如分享到用户量较大的社交平台,提 ...
- 新浪微博分享链接代码-简单前端分享
新浪微博前台分享链接代码: <a href="http://service.weibo.com/share/share.php?url=你要分享的网址;title=你要分享的文字;pi ...
- 第三方网站接入微信JS-SDK的分享自定义设置,微信分享小图标以及标题
首先这个坑是工作遇到的问题,正好需要分享链接有小图,于是各种百度,发现这里第三方网址需要接入微信的东西,才能正常的显示出小图等. 对于想了解如何操作的,觉得我的博客看不太懂的,可以参考 慕课网-微信相 ...
- WorkTool企微机器人APP分享自定义小程序
移动端应用怎么分享自定义小程序到企业微信 前言 什么是自定义小程序,就是我们可以通过业务逻辑或代码来动态修改每次发出的小程序所附带的路径(path)和参数(params),以此来控制每次发出的小程序都 ...
- WorkTool企微机器人APP分享自定义链接
移动端应用怎么分享自定义网页链接到企业微信 前言 我们知道分享自定义网页可以采用转发形式发到企业微信的客户或群里,但是如果我们业务需要配置每次链接入口不同,如链接附带一些业务参数,这时单纯使用转发常常 ...
最新文章
- 超前探秘首个国产元宇宙百度“希壤”:率先实现10万人同屏互动
- 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )
- Activity、View、Window、DecorView的关系
- metaprogramming笔记
- 航海王_html_css3_旋转效果demo
- 页面布局与编写(续2)
- P2634 [国家集训队]聪聪可可
- Spring Data JPA 从入门到精通~@Param用法
- json jackson
- ES6变量的解构赋值注意点及用途(补充)
- 教师计算机培训心得体会范文,教师计算机教育培训学习心得体会
- c语言求解矩阵方程,用C语言求解N阶线性矩阵方程Ax=b的简单解法(附源码)
- 报错:further occurrences of HTTP request parsing errors will be logged at DEBUG level
- 推荐使用Windows10企业版LTSC的理由
- pythoon_interview_redit
- 网易云音乐API,的调用方法 ,vue项目中(在本地使用)
- [HCTF 2018]WarmUp
- android开发播放直播视频rtsp方案总结
- c语言程序设计臧,臧学莲
- outguess 使用方法