Cordova 将文件类型注册为“打开方式”列表
Posted
技术标签:
【中文标题】Cordova 将文件类型注册为“打开方式”列表【英文标题】:Cordova register file types to 'open with' list 【发布时间】:2015-05-31 16:50:58 【问题描述】:我想注册我的 Ionic 应用程序(通过 Cordova)以打开某些文件类型。就像 Dropbox 一样。当用户在另一个应用程序(如电子邮件)上有文件时,他单击“打开方式”,会出现一个包含 Dropbox 应用程序的列表。
这是来自 Apple 的教程:https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Articles/RegisteringtheFileTypesYourAppSupports.html
是否有任何 Cordova 插件同时支持 android 和 iOS 并为该功能提供 JS API?提前致谢。
【问题讨论】:
【参考方案1】:您可以在 Cordova 中实现 FileType 关联。
它包括两个步骤。
1) 将 Android Manifest / iOS plist 中的文件注册为
清单
<intent-filter
android:icon='@drawable/ic_launcher'
android:label='AndroidMHT File'
android:priority='1'>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="*/*" />
<data android:pathPattern="*.mht" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="*" android:pathPattern=".*\\.mht" />
<data android:scheme="https" android:host="*" android:pathPattern=".*\\.mht" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="message/rfc822" android:scheme="http" />
<data android:mimeType="multipart/related" android:scheme="http" />
<data android:mimeType="message/rfc822" android:scheme="https" />
<data android:mimeType="multipart/related" android:scheme="https" />
</intent-filter>
列表
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>Document-molecules-320.png</string>
<string>Document-molecules-64.png</string>
</array>
<key>CFBundleTypeName</key>
<string>Molecules Structure File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.sunsetlakesoftware.molecules.pdb</string>
<string>org.gnu.gnu-zip-archive</string>
</array>
</dict>
</array>
2) 使用File Opener Plugin for Cordova
您可能需要传递必要的标志才能打开这些文件。
参考:Android、iOS 和 phonegap community forum thread
希望对您有所帮助。
【讨论】:
感谢您的链接(我修复了 Android 的链接)。我还没有机会进行测试,但这似乎是正确的方法。一个实际的插件会更容易(比如注册一个 URL 方案),但我想我可以使用一个钩子来让脚本完成 plist 更改。 AFAIK,“文件打开器插件”不相关,即它会让我的应用程序告诉操作系统打开其他人的文件,而这个问题只是关于确保另一个应用程序(如电子邮件)可以将文件发送到我的应用程序。 您好,我怎样才能获得 webapp 本身的文件地址? (一个用户在一张照片上按下了打开,现在他被转移到我的应用程序中,下一步是什么?) 有人找到下一步要抓文件了吗? @DanielGolub ? 嗨,有人找到了完整的解决方案吗?可以发链接吗?【参考方案2】:检查此link。 关于 Let'sRefactor 它是正确的,除了 fileopener ,在意图中,您应该确定当用户使用您的应用程序打开文件时要调用的函数(当然是本机)。 这一切都在上面的链接中进行了解释。
【讨论】:
以上是关于Cordova 将文件类型注册为“打开方式”列表的主要内容,如果未能解决你的问题,请参考以下文章