【发布时间】:2015-12-15 22:15:21
【问题描述】:
我有一个文件类型,扩展名为“.rfts”(实际上它只是存储一个 JSON 字符串,表示音频放大器的用户配置)。当它是来自电子邮件(例如 Gmail)的附件时,我希望能够打开此文件,以便我可以从另一台平板电脑导入用户设置。
这是我的清单的样子(请注意,我没有在其中包含其他活动,但还有 4 个其他活动没有意图过滤器)。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/RFtheme" >
<activity
android:name=".activity.MainActivity"
android:screenOrientation="landscape"
android:windowSoftInputMode="adjustPan" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</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"/>
<category android:name="android.intent.category.OPENABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern="\\.rfts$"/>
<data android:host="*"/>
</intent-filter>
</activity>
<provider
android:name=".model.FileProvider"
android:authorities="com.rockfordcorp.app3sixty.provider"
android:enabled="true"
android:exported="true" >
</provider>
</application>
我一直在尝试其他几个问题的其他建议修复,但它们是针对从浏览器打开 pdf 之类的。
当我尝试在 Gmail 中打开 .rfts 附件时,它告诉我“您没有可以打开此文件 (.rfts) 的应用程序。尝试在 google play 中搜索可以打开的应用程序” em>
我不知道我需要在这里做什么。我不知道 Gmail 将使用什么 mime 来打开 .rfts,也不知道它将使用什么方案。我尝试了几种不同的组合,但没有任何效果。我只是没有加入 Android 正在寻找的用于将此文件与我的应用关联的类别、mimetype、模式和方案的神奇组合。
编辑 有些成功,但还没有完成。
建议作为修复的问题不合时宜,原因是所需的方案实际上是“内容”,而不是“文件”
有效的意图过滤器是
<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="file" android:mimeType="*/*" android:pathPattern=".*\\.rfts"/>
<data android:scheme="content" android:pathPattern=".*\\.rfts" android:mimeType="application/octet-stream" />
<!-- <data android:host="*"/> -->
</intent-filter>
没有 android:sceheme="content" 它将无法工作。
然而,一个新的问题出现了。 Gmail 现在会打开以前未与其他应用关联的所有文件类型。例如,如果我要尝试打开一个 .rfff 文件,它会使用我的应用程序。如果您尝试打开 .txt,它会打开 Chrome 或 HTML 查看器的选择器。
这很接近,但它打开其他文件类型是有问题的。 Android:pathPattern 显然对我的应用关联的文件类型没有影响。
由于这个问题被标记为可能重复,我想指出建议的解决方案不适用于从 g-mail 而不是 web 打开文件,也不包括打开 自定义文件类型。使用换出文件类型的“解决方案”会导致 g-mail 继续坚持设备上没有能够打开文件类型的应用程序。
可能需要提供不同的解决方案来关联通过来自 Gmail 的意图打开此自定义文件类型。
【问题讨论】:
-
我相信这个问题的答案会让你走上正确的道路:stackoverflow.com/questions/1733195/…
-
请注意,您建议的问题是重复的,用于从网络打开,而我的问题是从 gmail 中打开。该问题的解决方案不适用于此。
-
另外请注意,我没有从浏览器打开已建立的文件类型。事实证明,将应用程序与要通过 gmail 打开的文件类型相关联完全需要一个不同的解决方案。我已经更新了我的问题以反映这一点。
-
嘿@MagicMarbles 我也遇到了同样的问题。请告诉我你是否有任何解决方案?