2012-08-30 198 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

我更新了我的答案 –