【安卓开发】调用系统原生的文件分享功能将文件分享给QQ或微信好友
调用系统原生的文件分享功能将文件分享给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或微信好友相关推荐
- 分享内容至第三方应用(QQ,微信好友,朋友圈)
文章目录 效果 使用 测试 效果 使用 var Share = new Object(); var shares = null;/*** 更新分享服务*/Share.updateSerivces = ...
- IOS开发调用系统相机和打开闪光灯
IOS开发调用系统相机和打开闪光灯 今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...
- 【安卓开发系列 -- 系统开发】搭建云手机容器环境 (基于 openvmi)
[安卓开发系列 -- 系统开发]搭建云手机容器环境 (基于 openvmi) [1]编译安装 openvmi [1.1]安装相关依赖 apt install -y build-essential cm ...
- 快速开发分享功能,一键分享到微博、微信等平台。
友推SDK是一款是面向移动应用的SDK组件,提供给开发者集成使用. 通过友推,开发者几行代码就可以为应用添加分享送积分功能,并提供详尽的统计报表,除了本身具备的分享功能 外,开发者也可将积分功能单独集 ...
- 安卓10和android区别,华为8月9日发布安卓10.0系统 华为EMUI 10.0功能及适配机型 华为安卓系统和鸿蒙OS区别...
华为8月9日发布安卓10.0系统 华为EMUI 10.0功能及适配机型 华为安卓系统和鸿蒙OS区别 根据最新消息显示,华为终端官方再次给出消息称,在8月9日华为开发者大会首天,他们将发布新一代基于An ...
- 开启Mac os系统原生的NTFS读写功能
开启Mac os系统原生的NTFS读写功能 早期的Mac OS是可以通过修改mount_ntfs指令实现的.但是10.5以后的版本都不可以编译了,打开是乱码.只能说微软霸道.后来只能用破解版的Para ...
- oppo手机android功能,OPPO 手机抢先升级安卓8.1系统,新增AI快捷功能
原标题:OPPO 手机抢先升级安卓8.1系统,新增AI快捷功能 对于一部手机是否好,或许很多人都看工艺,拍照以及配置,其实手机系统也是非常关键的,目前使用最多的依旧还是安卓系统,不过现在已经升级到了安 ...
- 分享QQ、微信 好友 ,空间、 新浪 的三种方式(验证通过)
请大家多多指教,这个版本会不断的更新,完善,谢谢大家的支持! 感谢这个群部门大神的 分享QQ.微信 好友 ,空间. 新浪 的两种方式 一.不经过第三方sdk直接调用系统自带的分享 1 ...
最新文章
- 区域设置 ID (LCID) 表, 及获取方法
- ECharts x时间轴不连续实现
- 每天一点点之vue框架开发 - axios解决跨越问题
- muxer、demuxer muxer是什么?视频封装、解封装(逆封装)
- ZOJ3805Machine(二叉树左右子树变换)
- C++20 要来了!
- Extjs数据展现原理
- 南京南站新建的,地铁换乘这么麻烦?
- 数据结构算法—递归算法求二叉树的叶子结点(C语言)
- 【服务器风扇静音】确定风扇线序定义的通用方法——以IBM SystemX 3630 M4为例
- 使用curl完成POST数据给飞信接口
- ENSP中ACL,NAT配置
- open output file xxx exe Permission denied
- UVM中设置打印信息的冗余度阈值和重载打印信息的严重性
- hough森林 matlab,霍夫变换(Hough
- bootstraptable remove 不依靠刷新数据
- 密码学基础---椭圆曲线加密算法ECC(ELGamal Diffie-Hellman)
- Effective STL 精华版读书笔记
- 以数据为基,戴尔科技全线护航数字化“攀登者”
- github下载提速常用方法