让Android分享再simple一点

1,408 阅读2分钟
原文链接: www.jianshu.com

前言

相信众多android developers在开发的项目中都遇到过分享需求,要分享到各个平台,通常的做法有三种:

  • 1️⃣分别去对接各个平台分享的sdk
  • 2️⃣直接使用集成化平台的sdk,例如sharesdk。
  • 3️⃣使用android 系统分享功能

前两种做法都很好,很多类都做了封装,功能也完善,调用起来也方便。但是以往我集成的过程感觉还是繁琐复杂,还需要去平台申请sdk。第三种做法虽然也可以实现分享,但是就不能指定特定的一个平台分享。
而且有些需求仅仅就是图文分享功能,前两种做法于是就有种大材小用的感觉。于是针对这种图文分享,就在想能不能让分享更简单些。于是乎,AndroidSystemShare应运而生。

小巧、简单是是本库的初衷以及特点

效果

ui.gif

集成

AS导入

compile 'com.allenliu:AndroidSystemShare:1.0.1'

使用

两句代码实现分享

 AndroidShare share = new AndroidShare
                .Builder(this)
                .setPlatform(AndroidSharePlatform.INSTAGRAM)
                .setImageUris(imageUris)
                .setContent("test")
                .build();
        share.share();
  • 目前支持10种国内外社交平台分享,涵盖了常见的平台

    • [x] WECHAT
    • [X] WECHAT_TIMELINE
    • [X] QQ
    • [X] QZONE
    • [X] SINA
    • [X] INSTAGRAM
    • [X] FACEBOOK
    • [X] WHATSAPP
    • [X] TWITTER
    • [X] GMAIL
    • [X] SYSTEMSHARE
  • 由于是基于系统分享原理的限制,某些特性不能做到都兼容,各平台分享类型支持如下表:

平台 纯文本 单图 多图
WECHAT Y Y Y
WECHAT_TIMELINE N Y Y
QQ Y Y Y
QZONE Y Y Y
SINA Y Y Y
INSTAGRAM N Y N
FACEBOOK N Y Y
WHATSAPP Y Y Y
TWITTER Y Y N
GMAIL N Y Y
SYSTEMSHARE - - -

分享原理

基于安卓系统分享,安卓系统分享大致原理:需要接收分享的app通过manifest注册filter过滤器指定分享类型mimetype,然后系统通过Intent指定mimetype过滤出所有支持此类型的app,然后显示出来。
既然能显示出来,只要找到各个app activity的ComponentName就能实现直接打开app并且分享。
该方法虽然简单,但是对于分享结果的回调并不能监听到。所以本库对于只是将图文分享出去并且不在乎分享结果的需求还是挺有用的。

库地址:github.com/AlexLiuShen…
最后欢迎Star || Issue || Pull request