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

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

内容简介: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地址

完毕。


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

查看所有标签

猜你喜欢:

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

图解CSS3

图解CSS3

廖伟华 / 机械工业出版社 / 2014-7-1 / CNY 79.00

本书是CSS3领域的标准性著作,由资深Web前端工程师根据CSS3的最新技术标准撰写。内容极为全面、丰富和翔实,由浅入深地讲解了CSS3新特性的语法、功能和使用技巧,涵盖选择器、边框、背景、文本、颜色、UI、动画、新型盒模型、媒体查询、响应式设计等各种模块;写作方式创新,有趣且易懂,用图解的方式来描述CSS3的每一个特性甚至每一个步骤都配有实战效果图;包含大量案例,实战性强,每个特性都有作者从实践......一起来看看 《图解CSS3》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具