mBmp.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
outputStream.flush();
outputStream.close();
// 微信使用contentPath作为文件路径进行分享
return CommonUtils.getWeiChartFileUri(context, fileFilePri);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String getWeiChartFileUri(Context context, File file) {
if (file == null || !file.exists()) {
return null;
}
Uri contentUri = FileProvider.getUriForFile(context,
context.getPackageName() + “.fileprovider”, // 要与AndroidManifest.xml
里配置的authorities
一致,假设你的应用包名为com.example.app
file);
// 授权给微信访问路径
context.grantUriPermission(“com.tencent.mm”, // 这里填微信包名
contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
return contentUri.toString(); // contentUri.toString() 即是以"content://"开头的用于共享的路径
}
相关说明,上面中的 checkVersionValid,checkAndroidNotBelowN 这2个方法,微信官方文档里面有,就不列上去了,方法一 是对分区缓存文件的存储,方法二是获取 content 开头的路径,我这里加了一个 android11Path 这个变量存储 ,确保 `mWXImageObject.imagePath = android11Path,至于其他的非分区的文件存储还是以前的逻辑.最终分享的时候,自行判断 imagePath 是取content 开头,还是非分区的文件路径,到这里微信Android 11 分享处理完毕了。
因为 各自的分享整合的逻辑不一致,所以我就不贴具体的分享代码了,在现有逻辑上 去Android11Path ,还是以前的path ,实在不行:分享异常,Android 11及以上系统需使用FileProvider方式分享 微信分享失败(不讲码德),请参考:https://www.jianshu.com/p/05c83a83d876
有具体的代码。
分享功能存储权限适配官方文档:https://wiki.connect.qq.com
QQ 适配起来就很顺畅,没啥大问题,赞!,FileProvider 和微信用一个xml 注意加的位置就行
<provider
android:name=“androidx.core.content.FileProvider”
android:authorities=“${PACKAGE_NAME}.fileprovider”
android:exported=“false”
android:grantUriPermissions=“true”>
<meta-data
android:name=“android.support.FILE_PROVIDER_PATHS”
android:resource=“@xml/file_paths” />
sinaweibosdk/weibo_android_sdk,github 地址:https://github.com/sinaweibosdk/weibo_android_sdk
具体的适配在这个目录下面有pdf 文档,适配起来还是挺顺畅的,因为我没有多图分享,微博多图分享,如下逻辑,但是我没有在文档里面看到相关配置信息 getExternalFilesDir(null) 这个在一点配置说明,就很尴尬!!!!
if (mShareMultiImage.isChecked()) {
// 分享多图
MultiImageObject multiImageObject = new MultiImageObject();
ArrayList list = new ArrayList<>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
String authority = this.getPackageName() + “.fileprovider”;
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/aaa.png”)));
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/ccc.JPG”)));
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/ddd.jpg”)));
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/fff.jpg”)));
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/ggg.JPG”)));
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/eee.jpg”)));
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/hhhh.jpg”)));
list.add(FileProvider.getUriForFile(this, authority, new File(getExternalFilesDir(null) + “/kkk.JPG”)));
} else {
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + “/aaa.png”)));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + “/ccc.JPG”)));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + “/ddd.jpg”)));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + “/fff.jpg”)));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + “/ggg.JPG”)));
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后笔者收集整理了一份Flutter高级入门进阶资料PDF
以下是资料目录和内容部分截图
里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。
内容部分截图
[外链图片转存中…(img-ZRhBt7To-1712063041862)]
[外链图片转存中…(img-Zj3rTb9a-1712063041862)]
里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。
[外链图片转存中…(img-wIH4zUbX-1712063041862)]