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 - 调用系统分享功能分享图片相关推荐

  1. (复习)android 调用系统相机 图库 裁剪-图片上传-客服端-服务器

    引用转载http://www.cnblogs.com/eyu8874521/archive/2012/07/20/2600697.html 效果: 客服端代码: package com.cn.lxz. ...

  2. android调用系统相机并获取图片

    如果不是特别的要求,通过拍照的方式取得图片的话,我们一般调用系统的拍照来完成这项工作,而没必要再自己去实现一个拍照功能.调用系统相机很简单,只需要一个intent就可以跳转到相几界面,然后再通过onA ...

  3. android调用系统裁剪功能,Android图片剪裁之调用系统剪裁

    参考: 一. 原理 通过Intent打开系统自带的剪裁Activity,通过Intent设置Extra参数,进行剪裁参数的设定.剪裁结果的缩略图会保存在返回的data中,而大图要通过Uri进行保存(其 ...

  4. Android调用系统相机,相册裁切图片展示的实现

    效果图: MainActivity package com.example.administrator.rxxjava;import android.content.Intent; import an ...

  5. 调用系统裁切功能裁切图片

    // 进入图片裁剪页面public static Intent getTakePickIntent(File file) {Intent intent = new Intent(MediaStore. ...

  6. Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享

    Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享 标签: Android系统分享QQ分享朋友圈图文分享 2016-09-27 22:54 279人阅读 评论(0) 收藏 举报 ...

  7. LINE分享android利用系统自带分享实现LINE分享功能

    android利用系统自带分享实现分享功能之LINE分享 最近公司向海外发展,提出了一个国外主流的社交APP分享需求.原来我使用的是第三方分享工具,但是太鸡肋,国内的APP支持的还是不错的,但是国外支 ...

  8. Java乔晓松-android中调用系统拍照功能并显示拍照的图片

    android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...

  9. Android 调用系统打开相机,打开相册获取图片路径

    我们在开发中经常遇到一些功能需要调取系统相机拍照获取图片,或者有的时候直接打开图库获取图片,那我们怎么获取呢,今天分享下, 第一步,打开相机 public static final int CAMER ...

  10. Android调用系统的拍照,打开相册功能

    Android调用系统的拍照,打开相册功能 1 添加权限: <!-- 往SDCard写入数据权限 --> <uses-permission android:name="an ...

最新文章

  1. SQL Server 存储过程的分页
  2. echarts图表第一个案例
  3. Web框架之Django_08 重要组件(form组件、cookie和session组件)
  4. leetcode最小路径和 (动态规划)python
  5. C#配置IIS搭建网站的工具类
  6. Spring组合注解和元注解
  7. 简单的获取Android手机屏幕的像素
  8. [恢]hdu 2000
  9. 2021年游戏项目的十大编程语言:C++、Java、C#均上榜
  10. Java下载安装及环境配置
  11. light动名词_英语里有些动词有名词形式,那还用不用它的动名词?怎么区分?...
  12. 如何将python代码封装成app_python打包成可执行文件app
  13. 详细讲解BM字符串搜索算法
  14. 猿辅导--课程质量建设
  15. notify()和notifyAll()有什么区别?
  16. vulnhub靶机-djinn2
  17. 智能小区监控、报警、灯光联动三位一体安全防范系统
  18. c语言什么是测试环境,vscode搭建与测试c语言运行环境
  19. 分享35款非常有用的免费字体
  20. 研究指出新冠病毒会导致偏瘫,Facebook大幅调整Libra白皮书丨科技前沿周报

热门文章

  1. DefenseCode ThunderScan 静态代码审计工具
  2. Disabling Shortcut Keys in Full Screen mode
  3. 人工智能离前端并不远 一步步教你开发一个机器学习APP(附源码)
  4. Python的安装以及编译器的安装
  5. 使用windows crypto API加密解密
  6. SpringRMI解析3-RmiServiceExporter逻辑细节
  7. sea 配置资料收集
  8. 启动和停止一个服务,修改服务的启动类型 Start and Stop Service for windows
  9. 消除由try/catch语句带来的Warning
  10. LeetCode 11. 盛最多水的容器