# 用其他应用打开
- 如开发者想实现在「其他应用打开」的列表中出现自家开发的App,可参考下方操作实现
- 注意:开发者工具版本需为最新的 nightly,即版本 >= 1.06.2407252
- 以及 Android SDK >= 1.3.26;iOS SDK >= 1.3.36
# 操作步骤
1、打开微信开发者工具,前往projuect.miniapp.json
且切换为 json 模式
2、Android 应用:在 mini-android
中新增下面的配置
"mini-android": {
"sdkVersion": "1.3.20",
"openMimeTyeps":[
"application/pdf",//要打开的文件类型
"image/*",//要打开的文件类型
"可按需添加更多"
],
}
iOS 应用:然后在 mini-ios
中新增下面的配置
"openMimeTyeps": [
{
"CFBundleTypeName": "AnyName",
"LSHandlerRank": "Default",
"LSItemContentTypes": [
"public.image"
],
"CFBundleTypeRole": "Viewer"
}
],
字段说明:
- CFBundleTypeName 必填,openMimeTypes是数组类型,给这个文件支持的数组每一项起一个别名
- CFBundleTypeRole 必填,身份,用来标识自己 app 可对这些文件处理的身份, Editor、Viewer、Shell、None
- LSHandlerRank 必填,用来决定 app 在文件分享可选的 app 列表中的顺序,声明应用程序优先级 Owner、Default、Alternate、None
- LSItemContentTypes 必填,支持的文件类型 UTI(苹果自己定义的文件类型)
- 更多文档请查阅苹果官方:https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-SW1
3、使用wx.miniapp.registOpenURL
监听到通过文件打开 app 的事件
wx.miniapp.registOpenURL((param) => {
console.log('regsitOpenUrl', param)
// 通过 isFile 来标识是否为文件,此时的 param.data.url 为文件在手机文件系统中的绝对路径
if (param.data.isFile) {
// do something
}
})
4、使用wx.miniapp.copyNativeFileToWx
将系统中的文件复制进 wx 文件沙箱中;传入参数 nativeFilePath 即文件在手机文件系统中的绝对路径,成功后会返回 tempFilePath
wx.miniapp.copyNativeFileToWx({
nativeFilePath: param.data.url,
success(res) {
console.log('copyNativeFileToWx success', res)
},
fail(e) {
console.log('copyNativeFileToWx fail', e)
}
})
结合上述步骤,完整示例如下:
wx.miniapp.registOpenURL((param) => {
console.log('regsitOpenUrl', param)
if (param.data.isFile) {
wx.miniapp.copyNativeFileToWx({
nativeFilePath: param.data.url,
success(res) {
console.log('copyNativeFileToWx success', res)
},
fail(e) {
console.log('copyNativeFileToWx fail', e)
}
})
}
})