Android集成ShareSDK第三方分享和登录
16lz
2021-01-25
本篇记录在Android平台上如何集成ShareSDK实现第三方登陆和分享,以及其中可能会遇到的坑。
Mob官网
下载
如图选择你需要分享的平台:
集成
解压下载的文件,然后在ShareSDK for Android 里面打开到QuickIntegrater.jar(需要正确配置好Java环境变量),如图所示:
填入和你自己项目一致的项目名称和包名,之后点确定会生成一个如下图所示跟你填入项目文件同名的eclipse项目,我们需要将其集成到Android Studio里面。
在AS中,将assets文件复制到与main同级的目录,将res、libs所有文件复制到对应libs文件夹下,src里面cn与com开头的文件夹复制到与java目录下,最后在AS里面的整个工程目录如下所示:
到这里准备工作终于做完了 = =,其中重点是ShareSDK.xml文件,我们所有的平台的appid等都是在里面进行配置。这里不多说,官网有详细的介绍。我们开始在项目中,调用第三方分享和登录。
首先是第三方分享
首先初始化ShareSDk
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ShareSDK.initSDK(this); }}
权限配置和activity声明
<uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" > <intent-filter> <data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> intent-filter> <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> intent-filter> <intent-filter> <data android:scheme="line.1477692153" /> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> intent-filter> activity> <activity android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" />
选取自己需要的平台进行配置即可。
在需要的地方调用第三方分享
private void showShare() { OnekeyShare oks = new OnekeyShare(); //关闭sso授权 oks.disableSSOWhenAuthorize(); // title标题,印象笔记、邮箱、信息、微信、人人网、QQ和QQ空间使用 oks.setTitle("标题"); // titleUrl是标题的网络链接,仅在Linked-in,QQ和QQ空间使用 oks.setTitleUrl("http://sharesdk.cn"); // text是分享文本,所有平台都需要这个字段 oks.setText("我是分享文本"); //分享网络图片,新浪微博分享网络图片需要通过审核后申请高级写入接口,否则请注释掉测试新浪微博 oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg"); // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数 //oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片 // url仅在微信(包括好友和朋友圈)中使用 oks.setUrl("http://sharesdk.cn"); // comment是我对这条分享的评论,仅在人人网和QQ空间使用 oks.setComment("我是测试评论文本"); // site是分享此内容的网站名称,仅在QQ空间使用 oks.setSite("ShareSDK"); // siteUrl是分享此内容的网站地址,仅在QQ空间使用 oks.setSiteUrl("http://sharesdk.cn");// 启动分享GUI oks.show(this); }
到这个地方,第三方分享基本就完成了。
第三方登陆
以QQ登陆为例
private void login() { Platform platform = ShareSDK.getPlatform(this, QQ.NAME); // 如果用户已经授权过 if (platform.isAuthValid()) { // 进行登录操作 Toast.makeText(this, "已经登录过了", Toast.LENGTH_SHORT).show(); return; } platform.setPlatformActionListener(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, HashMap hashMap) { // 进行登录操作,要进行UI操作,请回调至主线程 // 获取昵称 String nickname = obj.get("nickname").toString(); // 获取用户头像 String icon = obj.get("figureurl_qq_1").toString(); } @Override public void onError(Platform platform, int i, Throwable throwable) { // 如果授权错误清楚授权缓存的信息 platform.removeAccount(true); } @Override public void onCancel(Platform platform, int i) { } }); // 开启SSO授权,如QQ登录,当手机有QQ应用时,先从客户端申请授权,无则网页授权 // false标识开启SSO授权 platform.SSOSetting(false); platform.showUser(null); // 请求授权 platform.authorize(); }
这里需要注意的是,登录的监听回调都不是主线程,所以如果有UI操作,我们要将其回调到主线程中去操作。如果要从其他的平台登录只需要修改对应的平台名称即可。如需清除授权,退出登录操作调用platform.removeAccount(true)即可。
到这里第三方登录与分享基本就已经完成了,第三方的东西本来就是为了让开发人员用着简单,所有开发文档就是最后的学习资料。最后打包的时候可能会报错,我们还需要在build.gradle里面加入:
lintOptions{ checkReleaseBuilds false abortOnError false }
更多详细的资料,请访问 官网
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- 最近用android写的一个项目,开发心得
- android studio启动一直卡在fetching Android(安卓)sdk compomen
- 样式表以及Color.xml文件『Android系列六』
- 导入开源库到基于Android(安卓)Studio构建的项目中
- Android添加全屏启动画面