android - 调用系统分享功能分享图片
step1: 编写分享代码, 将Uri的生成方式改为由FileProvider提供的临时授权路径,并且在intent中添加flag
注意:在Android7.0之后,调用系统分享,传入URI的时候可能会导致程序闪退崩溃。这是由于7.0的新的文件权限导致的。下面的代码对其做了处理
public static int sharePic(Context context, String picFilePath) {File shareFile = new File(picFilePath);if (!shareFile.exists()) return SHARE_RESULT_FILE_NOT_FOUND;Intent intent = new Intent(Intent.ACTION_SEND);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName()+".flightlog.fileprovider", shareFile);intent.putExtra(Intent.EXTRA_STREAM, contentUri);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);}else {intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(shareFile));}intent.setType(MIME_TYPE_IMAGE);Intent chooser = Intent.createChooser(intent, context.getString(R.string.flight_log_dialog_share_title));if(intent.resolveActivity(context.getPackageManager()) != null){context.startActivity(chooser);}return SHARE_RESULT_NO_ERROR;}
step2: 在 AndroidManifest.xml 中的 application 标签中添加 provider 的配置
<application...><providerandroid:name="android.support.v4.content.FileProvider"android:authorities="com.yongdaimi.android.fileprovider"//注意和上面FileProvider方法中声明的authorities保持一致android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths_share_img" /></provider></application>
注意: provider 标签中 name 属性和 authorities 声明的值是有可能与第三方库冲突的,可酌情修改。
step3: 在res/xml中新建一个文件 file_paths_share_img.xml
<?xml version="1.0" encoding="utf-8"?> <resource xmlns:android="http://schemas.android.com/apk/res/android"><external-pathname="images"path="DCIM/IMAGE" /> </resource>
参考链接:
FileProvider使用及相关第三方冲突的完美解决
转载于:https://www.cnblogs.com/yongdaimi/p/10287477.html
android - 调用系统分享功能分享图片相关推荐
- (复习)android 调用系统相机 图库 裁剪-图片上传-客服端-服务器
引用转载http://www.cnblogs.com/eyu8874521/archive/2012/07/20/2600697.html 效果: 客服端代码: package com.cn.lxz. ...
- android调用系统相机并获取图片
如果不是特别的要求,通过拍照的方式取得图片的话,我们一般调用系统的拍照来完成这项工作,而没必要再自己去实现一个拍照功能.调用系统相机很简单,只需要一个intent就可以跳转到相几界面,然后再通过onA ...
- android调用系统裁剪功能,Android图片剪裁之调用系统剪裁
参考: 一. 原理 通过Intent打开系统自带的剪裁Activity,通过Intent设置Extra参数,进行剪裁参数的设定.剪裁结果的缩略图会保存在返回的data中,而大图要通过Uri进行保存(其 ...
- Android调用系统相机,相册裁切图片展示的实现
效果图: MainActivity package com.example.administrator.rxxjava;import android.content.Intent; import an ...
- 调用系统裁切功能裁切图片
// 进入图片裁剪页面public static Intent getTakePickIntent(File file) {Intent intent = new Intent(MediaStore. ...
- Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享
Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享 标签: Android系统分享QQ分享朋友圈图文分享 2016-09-27 22:54 279人阅读 评论(0) 收藏 举报 ...
- LINE分享android利用系统自带分享实现LINE分享功能
android利用系统自带分享实现分享功能之LINE分享 最近公司向海外发展,提出了一个国外主流的社交APP分享需求.原来我使用的是第三方分享工具,但是太鸡肋,国内的APP支持的还是不错的,但是国外支 ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- Android 调用系统打开相机,打开相册获取图片路径
我们在开发中经常遇到一些功能需要调取系统相机拍照获取图片,或者有的时候直接打开图库获取图片,那我们怎么获取呢,今天分享下, 第一步,打开相机 public static final int CAMER ...
- Android调用系统的拍照,打开相册功能
Android调用系统的拍照,打开相册功能 1 添加权限: <!-- 往SDCard写入数据权限 --> <uses-permission android:name="an ...
最新文章
- SQL Server 存储过程的分页
- echarts图表第一个案例
- Web框架之Django_08 重要组件(form组件、cookie和session组件)
- leetcode最小路径和 (动态规划)python
- C#配置IIS搭建网站的工具类
- Spring组合注解和元注解
- 简单的获取Android手机屏幕的像素
- [恢]hdu 2000
- 2021年游戏项目的十大编程语言:C++、Java、C#均上榜
- Java下载安装及环境配置
- light动名词_英语里有些动词有名词形式,那还用不用它的动名词?怎么区分?...
- 如何将python代码封装成app_python打包成可执行文件app
- 详细讲解BM字符串搜索算法
- 猿辅导--课程质量建设
- notify()和notifyAll()有什么区别?
- vulnhub靶机-djinn2
- 智能小区监控、报警、灯光联动三位一体安全防范系统
- c语言什么是测试环境,vscode搭建与测试c语言运行环境
- 分享35款非常有用的免费字体
- 研究指出新冠病毒会导致偏瘫,Facebook大幅调整Libra白皮书丨科技前沿周报
热门文章
- DefenseCode ThunderScan 静态代码审计工具
- Disabling Shortcut Keys in Full Screen mode
- 人工智能离前端并不远 一步步教你开发一个机器学习APP(附源码)
- Python的安装以及编译器的安装
- 使用windows crypto API加密解密
- SpringRMI解析3-RmiServiceExporter逻辑细节
- sea 配置资料收集
- 启动和停止一个服务,修改服务的启动类型 Start and Stop Service for windows
- 消除由try/catch语句带来的Warning
- LeetCode 11. 盛最多水的容器