1

我已经编写了以下意图过滤器来使用我的应用程序打开一个文本文件。它似乎有效,但只是有时。例如,如果我通过电子邮件发送文本文件,如果我选择从邮件中打开,我的应用程序不会显示。如果我先选择保存,然后打开,将显示我的应用程序。与投递箱类似的经验,如果我尝试从投递箱打开,我的应用程序将不会被列为能够打开,但如果我从投递箱导出到 sd 并使用文件管理器打开它,我的应用程序将被列出并且作品。

<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" />
  <data android:scheme="http" android:host="*" android:pathPattern=".*\\.txt" />
      <data android:scheme="https" android:host="*" android:pathPattern=".*\\.txt" />
      <!--  <data android:scheme="content" android:host="*" android:pathPattern=".*\\.txt" /> -->
  <data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.txt" />
   </intent-filter>
4

2 回答 2

1

Dropbox 和电子邮件应用程序可能使用内容提供程序并且不匹配pathPattern. 通常,内容提供程序不包含文件扩展名,但会使用 mime 类型来指示正在打开的文件类型。如果您打算打开任何text/plain文件,而不仅仅是那些具有.txt扩展名的文件,那么您最好pathPattern完全关闭。

<intent-filter>
      <data android:mimeType="text/plain" />
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
于 2012-08-30T13:15:23.067 回答
0

可能是因为电子邮件应用程序和保管箱使用不同的方案,而不是文件、http 或 https。尝试仅使用 mime type 属性。

编辑:根据保管箱论坛:

仅供参考,现在最简单的方法是通过使用正确的 mime 类型注册 VIEW 从​​ Dropbox 打开您的应用程序。然后一切都正确移交,保存和观看文件更改以重新上传处理得很好。

您只需要指定 MIME 类型,无需其他任何内容。不过我还没有尝试过,但可能这也适用于电子邮件应用程序,只要 mime 类型匹配。

如果你有兴趣,这里是链接:

https://forums.dropbox.com/topic.php?id=26035#post-162963

于 2012-08-30T13:00:23.257 回答