本篇记录在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    }

更多详细的资料,请访问 官网

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. 最近用android写的一个项目,开发心得
  6. android studio启动一直卡在fetching Android(安卓)sdk compomen
  7. 样式表以及Color.xml文件『Android系列六』
  8. 导入开源库到基于Android(安卓)Studio构建的项目中
  9. Android添加全屏启动画面

随机推荐

  1. Android(安卓)Studio3.0配置Butterknife8
  2. Android(安卓)NDK&JNI开发之Native崩溃日
  3. Android(安卓)捕获错误日志 UncaughtExce
  4. Android(安卓)Gallery3d源码学习总结(二)—
  5. android开发之 Wifi的四个类
  6. Android(安卓)UI- 对话框 (AlertDialog &
  7. android仿微信实现欢迎界面、介绍界面及
  8. Android中通知的使用
  9. android o android8.0 startforegroundse
  10. Android(安卓)StatFs类