- OpenSDK支持FileProvider方式分享文件到微信
各位开发者: 最新版本(7.0.13)的微信 SDK 已经适配使用FileProvider的方式来进行消息分享。 如果分享的消息中涉及文件路径(如图片类型消息),建议开发者针对Android 7.0版本及以上设备,判断微信版本支持(判断方法见后文【微信版本支持】一节)的情况下,更新为FileProvider的方式进行分享。以下是具体的适配说明。 使用FileProvider1. 配置在项目的[代码]AndroidManifest.xml[代码]添加相关配置,示例如下: <provider android:name="android.support.v4.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_provider_paths" /> </provider> // ${applicationId}为你的应用包名 在[代码]res/xml[代码]目录(如果没有[代码]xml[代码]目录,则新建一个)下,添加文件[代码]file_provider_paths.xml[代码],内容如下: <?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-files-path name="sharedata" path="shareData/"/> </paths> [代码]external-files-path[代码]表示通过 [代码]Context.getExternalFilesDir(null)[代码] 接口获取到的目录下的文件才可被共享,其他未配置的路径均不可被分享。同样的节点可以配置多个,以支持多个不同的子目录,如下所示: <?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-files-path name="sharedata" path="shareData/"/> <external-files-path name="sharedata2" path="shareData2/"/> </paths> [代码]paths[代码]内部还支持节点配置其他的路径,比如: [代码]files-path[代码],对应于 [代码]Context.getFilesDir()[代码] 获取到的目录[代码]cache-path[代码],对应于 [代码]Context.getCacheDir()[代码] 获取到的目录 ...还有一些其他可配置的路径,开发者可自行了解使用。 2. 使用FileProvider接口将路径通过FileProvider的接口转换成[代码]content://URI[代码]形式,示例如下: public void shareToWechat(Context context) { // ... String filePath = context.getExternalFilesDir(null) + "/shareData/test.png"; // 该filePath对应于xml/file_provider_paths里的第一行配置:,因此才可被共享 File file = new File(filePath); String contentPath = getFileUri(context, file); // 使用contentPath作为文件路径进行分享 // ... } public String getFileUri(Context context, File file) { if (file == null || !file.exists()) { return null; } Uri contentUri = FileProvider.getUriForFile(context, "com.example.app.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://"开头的用于共享的路径 } 微信版本支持OpenSDK版本:必须大于或等于 5.4.3 版本,建议开发者升级至最新版本 5.5.8微信版本:当且仅当通过 IWXAPI.getWXAppSupportAPI() 接口获取到的值 >= 0x27000D00,才能支持FileProvider的方式进行分享。示例代码如下:private IWXAPI api; // api的初始化这里省略 public void shareToWechat(Context context) { // ... if (checkVersionValid(context) && checkAndroidNotBelowN()) { String filePath = context.getExternalFilesDir(null) + "/shareData/test.png"; File file = new File(filePath); String contentPath = WXOpenSDKFileProviderHelper.getFileUri(context, file); // 使用contentPath作为文件路径进行分享 // ... } else { // 使用原有方式传递文件路径进行分享 // ... } } // 判断微信版本是否为7.0.13及以上 public boolean checkVersionValid(Context context) { return api.getWXAppSupportAPI() >= 0x27000D00; } // 判断Android版本是否7.0及以上 public boolean checkAndroidNotBelowN() { return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N; } 详细参考 OpenSDK 消息分享文档:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/Android.html 微信团队 2020年03月31日
2020-03-31 - 微信开发者工具 1.03.2008270 Stable 更新说明
已知问题 1.03.2009140 已修复[代码]F[代码] 修复 提示 [代码]Converting circular structure to JSON[代码] 的报错的问题 [代码]F[代码] 修复 onLaunch 里无法断点且网络请求无法显示的问题[代码]F[代码] 修复 模拟器区域不居中的问题[代码]F[代码] 修复 合并编译模式下,修改 js 文件无效的问题[代码]F[代码] 修复 推出动画异常导致模拟器显示白屏的问题[代码]F[代码] 修复 模拟器显示比例 50%,靠边阈值与展开宽度不理想的问题 [代码]F[代码] 修复 自定义 tabBar 会挡住页面底部的问题[代码]F[代码] 修复 切换编译条件后不生效的问题[代码]F[代码] 修复 图片不能在网络面板中预览的问题[代码]F[代码] 修复 命中断点后点击编译无效的问题[代码]F[代码] 修复 [代码]wx.getExtConfig[代码] 只有 complete 回调的问题 [代码]F[代码] 修复 弹出模拟器后 wxml 面板不可用的问题[代码]F[代码] 修复 自动化脚本无法使用自动真机调试的问题[代码]F[代码] 修复 [代码]wx.showTabBar[代码] 无效的问题下载地址Windows 64、Windows 32、macOS__________________________________________________________________________________________ 当前稳定版基于 1.03.2008201 RC 版,内核版本 nwjs: 0.39.3 并修复以下 bug [代码]F[代码] 修复 模拟器底部出现白条 查看详情[代码]F[代码] 修复 切换企业微信模拟器插件失败[代码]F[代码] 修复 MacOS 版在扫码登录页无法设置代理[代码]F[代码] 修复 切换模拟器网络状态时报错[代码]F[代码] 修复 WXML 面板无法调试伪类 下载地址Windows 64、Windows 32、macOS 1、支持调试小游戏分享到朋友圈选择基础库2.12.1后可以在开发者工具调试小游戏分享到朋友圈,目前仅支持调试分享当前游戏界面到朋友圈,暂不支持调试对局回放分享朋友圈。 开发文档:https://developers.weixin.qq.com/minigame/dev/guide/open-ability/share-timeline_game.html [图片] 2、增加启动时是否自动编译项目的设置在外观设置中可以设置在项目打开时是否自动编译 [图片] 3、优化 WXML 编辑体验本次更新优化了在编辑器编辑 wxml 文件的体验。包括了新支持可以自动关闭标签、补全和高亮的逻辑更合理,并提供了组件和属性详细说明,以及提示某些枚举值的补全。 [图片] 注意,如果项目中手动配置了文件的关联(例如手动指定了 files.associations),则此功能可能不能生效。 4、云数据库 explain API数据库 Explain API 是帮助开发者分析查询语句的 API,分析结果包括查询语句的执行计划、执行情况(包括索引使用情况)、及系统层面对查询语句的修改。该 API 仅在开发者工具中可使用。 示例 Explain 及结果: db.collection('test').where({ _openid: '{openid}' }).get({ explain: true, complete: console.log }) [图片] 5、调试器中云数据库自动索引告警 在开发者工具中会自动检测数据库请求的索引使用情况,如果发现没有最佳索引支持,会自动根据索引最佳实践给出相应的索引建议和告警,并且给出快速索引创建链接,可自动打开云控制台一键创建索引。 支持的自动检测和提示的内容包括:缺乏最佳索引支持的查询、多余索引去除提示、正则最佳实践提示、低区分度操作符提示等。 工具索引提示示例: [图片] 6、支持调试小游戏分享给指定用户开发者工具新支持.shareMessageToFriend接口,可以在开发者工具开放数据域下使用。 注意:开发者工具只是模拟实现此接口 详情见文档:https://developers.weixin.qq.com/minigame/dev/api/open-api/data/wx.shareMessageToFriend.html 7、预览交互入口优化优化了预览、自动预览、真机调试、自动真机调试的交互和UI 自动预览和自动真机调试的配置由设置迁移到自动预览和自动真机调试面板中 [图片] 8、支持设置标题栏样式为原生或自定义在外观设置中可以指定项目窗口的标题栏以何种方式进行渲染(系统原生或自定义)。 [图片] 此外,在 macOS 上,通过长按或右键点击最大化/全屏按钮,可以选择想要的窗口操作。 [图片] 9、扩展库支持分包使用useExtendedLib 支持在分包中引用,同时也支持分包单独配置使用。 { “subPackages”: [ "root": "foo/bar", "name": "bar", "useExtendedLib": [ "kbone": "latest", "weiui": "latest" ], "pages": [ "bar" ] ] } 10、picker 组件支持 headerText安卓系统下的 picker 组件新增 headerText 属性(选择器标题)。同时对 UI 进行了调整。iOS系统下的 picker 组件无变化。下图分别为安卓、iOS系统下的 picker 组件 UI 。 [图片] [图片] 11、增加代码热重载开发模式在之前工具开发页面逻辑时,每次修改都需要完整编译整个应用。对于频繁修改场景不是很方便,目前工具支持代码热重载开发模式,只需在本地设置选择匹配的基础库版本后,勾选【启用代码自动热重载】的设置。启动后在模拟器上方以及调试器可以看到相关的提示信息。 [图片] 在热重载开发模式下,当 wxml/wxss/js 文件编辑保存后将会自动触发热重载能力,在模拟器上即可以实时看到修改后的效果。提高单页面开发的效率。 [图片] 若需要对应用进行完整重启编译,可通过点击工具栏上的编译按钮或者通过编译快捷键触发完整重启编译。 注:文件自动热重载时,可能存在一些异常情况影响页面渲染效果,开发者可选择完整重启编译,另外该开发模式需要使用 2.12.0 及以上基础库版本, 12、新的构建 npm 方式工具支持了更自由的构建npm方式,可自定义node_modules和miniprogram_npm的位置 具体参考 https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html 自定义 node_modules 和 miniprogram_npm 位置的构建 npm 方式 13、优化 WXML 调试体验WXML 面板整个进行了重构优化,主要在以下几个方面做了改进: 提升了 WXML 节点展示的性能,解决了展开节点、选取节点等操作的卡顿问题优化了样式编辑体验,包括样式值提示、颜色编辑工具等增加了查找节点、样式过滤、盒模型展示、查看渲染样式面板等新功能[图片] 14、云控制台新增静态网站托管配置云开发控制台静态网站托管新增多项缓存和安全相关的配置能力,包括缓存配置、防盗链配置、IP 黑白名单配置、IP 限频配置,开通了静态网站托管能力之后可以在 ”网站配置“ tab 中进行设置。 [图片] 15、支持设置模拟器显示和隐藏切换时的表现 [图片] 新增设置,可以控制双击工具栏空白处、双击模拟器空白处的表现,以及模拟器显示和隐藏切换时的表现。当模拟器隐藏的时候,鼠标移动到窗口边缘时,可以通过浮标快速展开 [图片] 16、优化真机调试体验 优化了真机调试、预览的流程,降低了编译和准备文件等过程的耗时 17、优化 Mock面板参数支持全匹配配置优化了Mock对参数匹配的规则,新增支持字符串全匹配方式进行参数匹配 [图片] [图片] 18、使用快捷键退出工具时提醒,防止误操作 通过快捷键退出时会toast提示,2s内再次按对应快捷键才会退出程序 [图片]
2020-09-15