2011-12-17 39 views
0

我正在創建一個處理文本文件的android應用程序。我希望我的用戶能夠使用電子郵件,保管箱等共享他們的文件,但我也希望他們能夠在瀏覽器中打開它們,如果它們恰好是html文件。使用意圖在瀏覽器中打開文件或共享它

我在分別執行兩個代碼時沒有問題。這些是共享文件之一:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + path)); 
startActivity(Intent.createChooser(intent, "Send File")); 

,這是一個在瀏覽器中打開文件:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); 
intent.setData(Uri.parse("file://" + path); 
startActivity(Intent); 

我的問題是,我不想要求用戶哪些他預先想要的選項。我希望意向選擇器列出兩種操作類型。我嘗試使用text/html而不是text/plain,但瀏覽器僅在URI以http開頭時才偵聽意圖。

有關如何完成此任何想法?

+0

我目前的解決方案是撕裂ChooserActivity的代碼並實現我自己的MULTI_ACTION_CHOOSER意圖。 –

回答

1

就合併兩個名冊而言,你別無選擇,只能自己去做。

然而,無論你目前的實現有問題:

  • text/plain人會爲不處理EXTRA_STREAM應用程序失敗 - 你應該考慮使用Uri,也許指向ContentProvider由你使文件可用,因爲對數據Uri的支持將更爲常見。

  • 你的第二個將在瀏覽器不存在的設備上崩潰。此外,您還假設該瀏覽器將能夠始終從所有版本的Android中的值中加載file://Uri值,這不是一個安全的假設。如果瀏覽器作者想要加載本地文件,他們會在清單中增加對它的支持。如果您沒有HTTP URL,請使用WebView小部件。沒有專業級的代碼應該在任何地方參考com.android

相關問題