调用系统原生的文件分享功能将文件分享给QQ或微信好友

核心代码:

//传入的fileName是文件名的全路径@SuppressLint("QueryPermissionsNeeded")private void shareFile(String fileName) {final Uri uri;final File file = new File(fileName); int currentapiVersion = android.os.Build.VERSION.SDK_INT;if (currentapiVersion >= 24) {//若SDK大于等于24  获取uri采用共享文件模式
//            Log.e(TAG, "版本大于24,获取uri采用共享文件模式, 根目录:" +  Environment.getExternalStorageDirectory().getPath());uri = FileProvider.getUriForFile(this.getApplicationContext(), "你的包名.fileprovider", file);} else {uri = Uri.fromFile(file);}Intent share = new Intent(Intent.ACTION_SEND);share.putExtra(Intent.EXTRA_STREAM, uri);share.setType(/*"application/pdf"*/getMIMEType(new File(file.getAbsolutePath())));//此处可发送多种文件share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);share.addCategory(Intent.CATEGORY_DEFAULT);share.setPackage("com.tencent.mobileqq");
//若需要分享到微信,只需要更改Package即可
//share.setPackage("com.tencent.mm")if (share.resolveActivity(RowDataDirListActivity.this.getPackageManager()) != null){RowDataDirListActivity.this.startActivity(share);} else {ToastUtils.show("没有可以处理该pdf文件的应用");}}

getMIMEType()方法:

    private String getMIMEType(File file) {String type="*/*";String fName = file.getName();//获取后缀名前的分隔符"."在fName中的位置。int dotIndex = fName.lastIndexOf(".");if(dotIndex < 0)return type;/* 获取文件的后缀名 */String fileType = fName.substring(dotIndex,fName.length()).toLowerCase();if("".equals(fileType))return type;//在MIME和文件类型的匹配表中找到对应的MIME类型。for(int i = 0; i< FileUtils.MIME_MapTable.length; i++){if(fileType.equals(FileUtils.MIME_MapTable[i][0]))type = FileUtils.MIME_MapTable[i][1];}return type;}

需要在AndroidManifest.xml中添加配置

    <application...<providerandroid:authorities="你的包名.fileprovider"android:name="androidx.core.content.FileProvider"android:grantUriPermissions="true"android:exported="false"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/filepaths"/></provider>...</application>

在res文件夹里创建一个xml文件夹, 并创建filepaths.xml文件

<?xml version="1.0" encoding="utf-8"?>
<paths><external-path path="你需要访问的文件夹去掉根目录/" name="files_path" />
</paths>

external-path 就代表了 Environment.getExternalStorageDirectory().getPath()。

【安卓开发】调用系统原生的文件分享功能将文件分享给QQ或微信好友相关推荐

  1. 分享内容至第三方应用(QQ,微信好友,朋友圈)

    文章目录 效果 使用 测试 效果 使用 var Share = new Object(); var shares = null;/*** 更新分享服务*/Share.updateSerivces = ...

  2. IOS开发调用系统相机和打开闪光灯

    IOS开发调用系统相机和打开闪光灯      今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...

  3. Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题

    Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...

  4. 【安卓开发系列 -- 系统开发】搭建云手机容器环境 (基于 openvmi)

    [安卓开发系列 -- 系统开发]搭建云手机容器环境 (基于 openvmi) [1]编译安装 openvmi [1.1]安装相关依赖 apt install -y build-essential cm ...

  5. 快速开发分享功能,一键分享到微博、微信等平台。

    友推SDK是一款是面向移动应用的SDK组件,提供给开发者集成使用. 通过友推,开发者几行代码就可以为应用添加分享送积分功能,并提供详尽的统计报表,除了本身具备的分享功能 外,开发者也可将积分功能单独集 ...

  6. 安卓10和android区别,华为8月9日发布安卓10.0系统 华为EMUI 10.0功能及适配机型 华为安卓系统和鸿蒙OS区别...

    华为8月9日发布安卓10.0系统 华为EMUI 10.0功能及适配机型 华为安卓系统和鸿蒙OS区别 根据最新消息显示,华为终端官方再次给出消息称,在8月9日华为开发者大会首天,他们将发布新一代基于An ...

  7. 开启Mac os系统原生的NTFS读写功能

    开启Mac os系统原生的NTFS读写功能 早期的Mac OS是可以通过修改mount_ntfs指令实现的.但是10.5以后的版本都不可以编译了,打开是乱码.只能说微软霸道.后来只能用破解版的Para ...

  8. oppo手机android功能,OPPO 手机抢先升级安卓8.1系统,新增AI快捷功能

    原标题:OPPO 手机抢先升级安卓8.1系统,新增AI快捷功能 对于一部手机是否好,或许很多人都看工艺,拍照以及配置,其实手机系统也是非常关键的,目前使用最多的依旧还是安卓系统,不过现在已经升级到了安 ...

  9. 分享QQ、微信 好友 ,空间、 新浪 的三种方式(验证通过)

    请大家多多指教,这个版本会不断的更新,完善,谢谢大家的支持! 感谢这个群部门大神的 分享QQ.微信  好友 ,空间. 新浪   的两种方式 一.不经过第三方sdk直接调用系统自带的分享       1 ...

最新文章

  1. 区域设置 ID (LCID) 表, 及获取方法
  2. ECharts x时间轴不连续实现
  3. 每天一点点之vue框架开发 - axios解决跨越问题
  4. muxer、demuxer muxer是什么?视频封装、解封装(逆封装)
  5. ZOJ3805Machine(二叉树左右子树变换)
  6. C++20 要来了!
  7. Extjs数据展现原理
  8. 南京南站新建的,地铁换乘这么麻烦?
  9. 数据结构算法—递归算法求二叉树的叶子结点(C语言)
  10. 【服务器风扇静音】确定风扇线序定义的通用方法——以IBM SystemX 3630 M4为例
  11. 使用curl完成POST数据给飞信接口
  12. ENSP中ACL,NAT配置
  13. open output file xxx exe Permission denied
  14. UVM中设置打印信息的冗余度阈值和重载打印信息的严重性
  15. hough森林 matlab,霍夫变换(Hough
  16. bootstraptable remove 不依靠刷新数据
  17. 密码学基础---椭圆曲线加密算法ECC(ELGamal Diffie-Hellman)
  18. Effective STL 精华版读书笔记
  19. 以数据为基,戴尔科技全线护航数字化“攀登者”
  20. github下载提速常用方法

热门文章

  1. 解决桌面右键文件夹卡死的问题
  2. 云卷水乡 云端时代2017年渠道大会召开
  3. FAQ |百度超级链Dapp互通计划答疑
  4. React 中的useRef
  5. 三星资产管理 (香港)推出元宇宙ETF 专注投资未来的风口赛道
  6. 大数据项目从开机到蓝屏
  7. 敏捷项目管理文化变革之二:敏捷的文化基因-平衡之道
  8. UI设计师的市场需求怎样
  9. 项目二 管理与Linux系统
  10. 新型电力系统加快建设,亟需推动传统电网技术与数智化技术融合