利用Android 系统的原生 API 实现分享功能

栏目: IOS · Android · 发布时间: 6年前

内容简介:Fastandrutils 是一套整理修改整合的android开发常用的工具类。这样可以减少复制粘贴代码,从而减少重复代码,也不用为了一个常用的功能去谷歌百度,让代码更简洁,让开发更高效。

利用Android 系统的原生 API 实现分享功能

关于

Fastandrutils 是一套整理修改整合的android开发常用的 工具 类。

这样可以减少复制粘贴代码,从而减少重复代码,也不用为了一个常用的功能去谷歌百度,让代码更简洁,让开发更高效。

同时希望您的添加完善,让android开发变得更简单。

利用Android 系统的原生 API 实现分享功能

系统的分享界面

利用Android 系统的原生 API 实现分享功能

自定义分享界面

介绍

改工具类实现了

  1. 调用系统的分享功能
  2. 自定义分享界面功能
  3. 可分享文字,文件,图片等
  4. 简单易用
  5. 无需接入第三方分享sdk

使用

调用系统的分享界面

new FShare.FShareBuilder(FShareActivity.this, null)
                        .setShareContent("0000")
                        .setShareSubject("dddd")
                        .build()
                        .shareBySystem();

调用自定义的分享界面

new FShare.FShareBuilder(FShareActivity.this, "cn.hotapk.goodfilemanager.fileprovider")
                        .setShareContent("0000")
                        .setShareSubject("dddd")
//                        .setShareFilter(new String[]{"com.tencent.mm", "cn.andouya", "com.qihoo360.feichuan", "com.lenovo.anyshare", "com.sand.airdroid"})
                        .build()
                        .shareByCustom();

参数说明

参数 说明
mActivity FragmentActivity
shareFilter 显示你想要分享出去的应用的包名类别
filePath 文件路径
topTitle 显示标题
shareContent 分享的内容
shareSubject 分享的主题
authorities Android7.0的文件权限 的FileProvider AndroidManifest.xml provider下配置的名称
requestCode startActivityForResult 回调
componentNames ComponentName列表

关键代码

指定分享到某个应用

private Intent getIntent(ComponentName componentName, String mimeType, Uri uri) {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        if (componentName != null) {
            shareIntent.setComponent(componentName);
        }
        shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        shareIntent.setType(mimeType);
        if (uri != null) {
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        }
        shareIntent.putExtra(Intent.EXTRA_TEXT, shareContent);
        shareIntent.putExtra(Intent.EXTRA_SUBJECT, shareSubject);
        return shareIntent;
    }

获取所有支持分享的应用

List<ShareBean> shareBeans = new ArrayList<>();
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.setType(mimeType);
            List<ResolveInfo> resolveInfos = getActivity().getPackageManager().queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
            for (int i = 0; i < resolveInfos.size(); i++) {
                ResolveInfo resolveInfo = resolveInfos.get(i);
                PackageManager pm = getActivity().getApplication().getPackageManager();
                ActivityInfo activityInfo = resolveInfo.activityInfo;
                ShareBean shareBean = new ShareBean();
                shareBean.setAppName(activityInfo.loadLabel(pm).toString());
                shareBean.setPackageName(activityInfo.packageName);
                shareBean.setClassName(activityInfo.name);
                shareBean.setIcon(activityInfo.loadIcon(pm));

                if (shareFilter != null && shareFilter.length > 0) {
                    for (int j = 0; j < shareFilter.length; j++) {
                        if (shareBean.getPackageName().equals(shareFilter[j])) {
                            shareBeans.add(shareBean);
                        }
                    }
                } else {
                    shareBeans.add(shareBean);
                }
            }

github地址

完毕。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web信息架构(第3版)

Web信息架构(第3版)

Peter Morville、Louis Rosenfeld / 陈建勋 / 电子工业出版社 / 2008年8月 / 85.00

本书涵盖了信息架构基本原理和实践应用的方方面面。全书共7个部分,包括信息架构概述、信息架构的基本原理、信息架构的开发流程和方法论、信息架构实践、信息架构与组织、两个案例研究,以及参考资料清单。 本书兼具较高的理论价值和实用价值,曾被Web设计领域多本书籍重点推荐,是信息架构领域公认的经典书,不论新手还是专家都能各取所需。本书可供Web设计与开发者、Web架构师、网站管理者及信息管理相关人员参......一起来看看 《Web信息架构(第3版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具