Android10 分享微信提示获取资源失败
2023-09-27 14:27:38 时间
在大于android7的版本下我们要如此设置
val fileUri = FileProvider.getUriForFile(
context, context.getPackageName().toString() + ".fileprovider",
file
)
但是。。随着版本迭代。android10来了
把Target升级到30以后。微信分享就报错了。
需要添加这句话
val fileUri = FileProvider.getUriForFile(
context, context.getPackageName().toString() + ".fileprovider",
file
)
context.grantUriPermission(
"com.tencent.mm", // 这里填微信包名
fileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION
)
完整分享语句
public boolean shareStream(final File file, final String mimeType) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(EXTRA_FILEPATH, file.getAbsolutePath());
intent.setType(mimeType);
try {
Uri fileUri = FileProvider.getUriForFile(_context, getFileProviderAuthority(), file);
// 授权给微信访问路径
AGBase.mContext.grantUriPermission("com.tencent.mm", // 这里填微信包名
fileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(Intent.EXTRA_STREAM, fileUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
showChooser(intent, null);
return true;
} catch (Exception e) { // FileUriExposed(API24) / IllegalArgument
return false;
}
}
public void showChooser(final Intent intent, final String chooserText) {
try {
_context.startActivity(Intent.createChooser(intent, chooserText != null ? chooserText : _chooserTitle));
} catch (Exception ignored) {
}
}
文本文件建议使用 text/plain
iamge 使用别的 image/png 等
相关文章
- Addressable卸载单个资源的疑问
- Addressable如何删除旧资源
- HBase写吞吐场景资源消耗量化分析及优化
- 现有设备中电子元器件资源调查
- 如何批量删除k8s资源对象
- 行人检测资源(上)综述文献
- 《混合云计算》——1.2 云计算的要素:资源池/云计算模式和服务
- 《Windows PowerShell实战指南(第2版)》——1.6 在线资源
- 《Haskell并行与并发编程》——第1章,第1.2节工具和资源
- 《精通Unreal游戏引擎》一第2步 项目间资源迁移
- Unity AssetBundle 之 (入门)简单的AssetBundle资源加载 Prefab 预制体 使用的案例
- mysql查看哪个线程占用资源高
- Android aapt 查看资源信息