2012-08-30 252 views
1

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

<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> 

回答

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> 
+0

我试着添加但仍然没有成功 – user1013448

+0

编辑我的答案包括什么数据元素应该看起来像。这应该是您需要考虑的视图操作。 –

+0

这似乎工作 – user1013448

0

可能是因为电子邮件应用程序和Dropbox使用不同的方案,而不是文件,http或https。尝试仅使用MIME类型属性。

编辑: Acording到保管箱论坛:

仅供参考,现在要做的最简单的方法是用正确的MIME类型VIEW登记开辟从Dropbox的您的应用程序。然后一切正常传递,并且保存&观看文件更改重新上传处理良好。

你只需要指定MIME类型,没有别的。虽然我还没有尝试过,但可能这也适用于电子邮件应用程序,只要mime类型匹配。

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

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

+0

似乎并没有对任何情况下 – user1013448

+0

我尝试添加 工作<数据的android:方案= “内容” 机器人:主机= “*” 机器人:mime类型= text/plain的” /> 但仍然没有成功 – user1013448

+0

我更新了我的答案 –