Code Monkey home page Code Monkey logo

shareutil's Introduction

ShareUtil

ShareUtil是一个综合性的分享及登录工具库,支持微信分享,微博分享,QQ分享,QQ空间分享以及Android系统默认分享,支持微信登录,微博登录以及QQ登录并获取用户信息。

Preview

share login

Feature

  1. 多种分享方式:

  2. 支持分享图片本地链接,网络链接或者Bitmap, 不需要考虑各个平台的不一致性。

  3. 支持微信、QQ、微博登录并获取登录用户信息

Usage

添加依赖

免第三方Jar包配置

    compile 'me.shaohui.shareutil:shareutil:1.3.8'

手动添加第三方jar

	compile 'me.shaohui.shareutil:shareutil:1.3.8.no_jar'

使用配置

  1. build.gradle 配置 在defaultConfig节点下增加你的qq id信息

     defaultConfig {
     	...
     	
         manifestPlaceholders = [
                 //  替换成你的qq_id
                 qq_id: "123456789"
         ]
         
     }
    
  2. 在使用之前设置在各个平台申请的Id,以及分享的回调(推荐放在Application的onCreate方法中)

         // init
         ShareConfig config = ShareConfig.instance()
                 .qqId(QQ_ID)
                 .wxId(WX_ID)
                 .weiboId(WEIBO_ID)
                 // 下面两个,如果不需要登录功能,可不填写
                 .weiboRedirectUrl(REDIRECT_URL)
                 .wxSecret(WX_ID);
         ShareManager.init(config);
    

分享使用

    ShareUtil.shareImage(this, SharePlatform.QQ, "http://image.com", shareListener);
    ShareUtil.shareText(this, SharePlatform.WX, "分享文字", shareListener);
    ShareUtil.shareMedia(this, SharePlatform.QZONE, "title", "summary", "targetUrl", "thumb", shareListener);

登录使用

        // LoginPlatform.WEIBO  微博登录   
        // LoginPlatform.WX     微信登录
        // LoginPlatform.QQ     QQ登录 
        final LoginListener listener = new LoginListener() {
                @Override
                public void loginSuccess(LoginResult result) {
                    //登录成功, 如果你选择了获取用户信息,可以通过
                }
            
                @Override
                public void loginFailure(Exception e) {
                    Log.i("TAG", "登录失败");
                }
    
                @Override
                public void loginCancel() {
                    Log.i("TAG", "登录取消");
                }
            };
        LoginUtil.login(MainActivity.this, LoginPlatform.WEIBO, mLoginListener, isFetchUserInfo);

使用说明

  1. QQ不支持纯文字分享,会直接分享失败

  2. 使用Jar文件的版本如下:

     微信版本:3.1.1
     QQ版本:3.1.0 lite版
     微博版本: 3.1.4
    
  3. 分享的bitmap,会在分享之后被回收掉,所以分享之后最好不要再对该bitmap做任何操作。

  4. example 中的代码可以参考,但是不可运行,因为需要保证包名以及签名文件和你申请各个平台id所填写信息保持一致

  5. ShareListener的回调结果仅供参考,不可当做分享是否返回的依据,它并不是那么完全可靠,因为某些操作,例如微博分享取消,但是用户选择了保存草稿,这时候客户端并不会收到回调,所以也就不会调用ShareListener的onCancel

ChangeLog

1.3.8

  • 修复在低端设备上,可能导致的 NullPointException 问题

1.3.7

  • 修复微信分享大图没反应bug
  • 修复在5.0以下设备使用登录功能会意外收到登录取消回调

1.3.6

  • ShareUtil新增isInstalled方法,方便检查客户端是否安装

1.3.5

  • 修复QQ分享media类型错误
  • 完善log
  • 开放Application Context调用
  • 增加检查外部存储
  • 重构部分代码

1.3.3

  • 增加Debug模式

1.3.2

  • 修复若干分享相关的bug

1.3.1

  • 修复微博分享的bug

1.3.0

  • 重构使用方式,minSdkVersion - > 9

1.2.8

  • 增加分享失败Exception

1.2.7

  • 解决内存泄露的问题

TODO

  1. 微信内存泄露
  2. 图片加载失败,关闭Activity

Thanks

License

Copyright 2016 shaohui10086

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

shareutil's People

Contributors

shaohui10086 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shareutil's Issues

auth faild

按照正常操作,登录弹出授权页面的时候,toast:找不到文件。分享的时候报错误:java.lang.Exception: auth faild!!!!

添加依赖过后出现jar冲突

我看了下你源代码添使用了okhttp、io.reactivex:rxjava、io.reactivex:rxandroid 我把我用的这些依赖给删除了 但是还是报冲突 怎么解决

在MI 3C手机上系统默认的分享会失败,提示 应用未安装

04-06 14:11:08.850 4452-4452/my.com.bit.jpjjr.android E/gold: 分享失败
                                                              java.lang.Exception: The application is not install
                                                                  at me.shaohui.shareutil.ShareUtil.action(ShareUtil.java:70)
                                                                  at me.shaohui.shareutil._ShareActivity.onCreate(_ShareActivity.java:43)
                                                                  at android.app.Activity.performCreate(Activity.java:6251)
                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
                                                                  at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:5461)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

修改如下代码暂时解决

DefaultShareInstance.java

    @Override
    public boolean isInstall(Context context) {
//        Intent shareIntent = new Intent();
//        shareIntent.setAction(Intent.ACTION_SEND);
//        return context.getPackageManager()
//                .resolveActivity(shareIntent, PackageManager.MATCH_DEFAULT_ONLY) != null;
        return true;
    }

hi

问下你的程序支持 分享 纯文字到朋友圈吗

question

我项目之前有okhttp,导入你的之后就冲突报错,日志如下
Error:(125, 9) 错误: <匿名com.ohepay.wallet.net.okhttp.OkHttpUtils$2>不是抽象的, 并且未覆盖Callback中的抽象方法onResponse(Call,Response)
Error:(126, 13) 错误: 方法不会覆盖或实现超类型的方法
Error:(132, 13) 错误: 方法不会覆盖或实现超类型的方法

嗯,十分感谢,很好

very good,确实是第三方登录分享的轻量化可掌控的替代物
我用我们的包名和keystore测了一遍,都通了
同学们刚拉下代码可能需要多配置几个地方,我跟领导商量一下,看能否把我们一个
小项目的包名和keystore && QQ微信微博的key贡献出来
虽然ShareSDK暂时不能替换下来,不过还是要吐下槽,代码都TM混淆了
给楼主点个赞

2024最新免费社工库大全

AI工具箱(换脸,ChatGPT)①https://t.me/gotoask_bot?start=cl_p5739552764
https://t.me/+Rs1_mZf-j35hMjI9

1.顶尖机器人
https://t.me/DJZT_bot?start=EvXntosMSv
2.情报局社工库
https://t.me/qingbaojuSGK3_bot?start=NTczOTU1Mjc2NA==
3.AISGK社工库机器人
💁🏻推荐社工人肉查询机器人: @aishegongkubot
社工庫机器人:http://t.me/aishegongkubot?start=AISGK_NULG3B8N
4.星盾社工库机器人https://t.me/XingDun2Bot?start=cqL0j3X
5.DATA007机器人:https://t.me/DATA_007bot?start=tQGepsKPRL
6.Space X机器人
https://t.me/SpaceSGK_bot?start=nxQttjnTCN
7.知乎社工库
http://t.me/zhihu_bot?start=ZHIHU_UVNDOLSX
8.花花社工库
https://t.me/sgkvipbot?start=vip_1111085

调用微信登录时,报空引用:ShareConfig.isDebug()' on a null object reference

04-21 10:59:31.407 9307-9307/xique.yinwei.ren E/AndroidRuntime: FATAL EXCEPTION: main
Process: xique.yinwei.ren, PID: 9307
java.lang.RuntimeException: Unable to start activity ComponentInfo{xique.yinwei.ren/me.shaohui.shareutil._ShareActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean me.shaohui.shareutil.ShareConfig.isDebug()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean me.shaohui.shareutil.ShareConfig.isDebug()' on a null object reference
at me.shaohui.shareutil.ShareLogger.i(ShareLogger.java:14)
at me.shaohui.shareutil._ShareActivity.onCreate(_ShareActivity.java:36)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

类库发布到bintray

其实我有写一个类似的库,能不能问一下发布bintray的时候是怎么配置打不打包jar包的

java.lang.NoSuchMethodError: No static method fromEmitter(Lrx/functions/Action1;Lrx/Emitter$BackpressureMode;)Lrx/Observable; in class Lrx/Observable; or its super classes (declaration of 'rx.Observable' appears in

java.lang.NoSuchMethodError: No static method fromEmitter(Lrx/functions/Action1;Lrx/Emitter$BackpressureMode;)Lrx/Observable; in class Lrx/Observable; or its super classes (declaration of 'rx.Observable' appears in /data/app/com.buglee.lee.timelinenote-2/base.apk) at me.shaohui.shareutil.login.instance.QQLoginInstance.fetchUserInfo(QQLoginInstance.java:97) at me.shaohui.shareutil.login.instance.QQLoginInstance$1.onComplete(QQLoginInstance.java:65)

微信分享图片无法调起微信

我用相机拍了张照片,分享的时候无法调用微信
另外,当我中途取消微信分享的时候,回调的也是分享成功的方法

支持一下

想问下这个库和shareloginlib的不同点,然后希望可以一同交流一下坑。我qq:460412008

gradle无法构建

按使用步骤添加配置后,构建失败,提示内容如下:
Error:(47, 13) Failed to resolve: me.shaohui:shareutil:1.3.5

开发环境:AndroidStudio 2.3 Beta1
Gradle:3.2
Maven仓库:jcenter、https://jitpack.io

编译时报错

从github clone下来的项目,导入as编译报错,问题如下:
Error:Execution failed for task ':shareutil:processDebugAndroidTestManifest'.

Manifest merger failed : Attribute data@scheme at manifestMerger2778195226392368006.xml requires a placeholder substitution but no value for <qq_id> is provided.

请问是什么原因?

可以Builder制作成链式调用

现在只能通过setters方法传参数,亲身感受多了很难受而且容易出错,建议做成builder链式调用,一句话搞定相当的爽,可看改进后代码

new ShareBottomDialog.ShareBottomDialogBuilder("targetUrl")
.title("title")
.summary("summary")
.thumbUrlOrPath("thumbUrlOrPath")
.build()
.show(getSupportFragmentManager());

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.