gddhy

_(:з」∠)_ 加载中...
  • 主页
  • 归档
  • 工具
  • 关于
所有文章 友链

gddhy

_(:з」∠)_ 加载中...

  • 主页
  • 归档
  • 工具
  • 关于

安卓通过URI分享文件

2021-04-14
字数统计:398字 阅读时长≈1分

之前按照华为开发者文档里的分享文件试过这个,但是接收方一直无法拿到文件,找到了其他解决方法,用后可行

华为提供的方法是这个,原因未知,接收的软件拿不到文件

1
intent.setDataAndType(fileUri,getContentResolver().getType(fileUri));

找到下面解决方法,可以接收方能拿到文件

1
2
intent.setType(getContentResolver().getType(uri));
intent.putExtra(Intent.EXTRA_STREAM,uri);

下面贴代码
manifest中注册

1
2
3
4
5
6
7
8
9
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>

分享文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
File file = new File(filePath);
Uri uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, getPackageName()+".FileProvider", file);
} else {
uri = Uri.fromFile(file);
}
Intent intent = new Intent(Intent.ACTION_SEND);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
intent.setType(getContentResolver().getType(uri));
intent.putExtra(Intent.EXTRA_STREAM,uri);
try {
startActivity(Intent.createChooser(intent, "分享"));
} catch (Exception e){
e.printStackTrace();
}

关于res/xml/file_paths.xml

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<root-path name="root" path="" /> 设备根目录
<files-path name="files" path="" /> 应用私有files目录
<cache-path name="cache" path="" /> 应用私有cache目录
<external-path name="external" path="" /> 内置储存空间根目录
<external-files-path name="name" path="path" /> 内置储存空间中的私有files
<external-cache-path name="name" path="path" /> 内置储存空间中的私有cache
</paths>

上面xml按需添加就行,name对外展示,path为实际目录

参考内容 谷歌开发者 | 华为开发者文档

赏

谢谢你请我吃糖果

微信
  • Android

扫一扫,分享到微信

微信分享二维码
在安卓手机上运行mrp
不一样的开箱 华蜀k11c
目录,不存在的…
留言已关闭
:gddhy
© gddhy
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链

tag:

  • Android
  • 软件分享
  • game
  • Hexo
  • JavaScript
  • 旧机博物馆
  • MIUI
  • Java
  • git
  • Termux
  • mtk
  • 原神
  • Win
  • Html
  • 安卓学习笔记

    缺失模块

  • Luminous' Home
  • 影子博客
  • 四次元领域
  • 初之音
  • Mr.Pumpkin
  • ZhaoQuinn 's Blog