2012-01-30 38 views
4

我的應用程序包含一個發送功能,它顯示用於發送文檔的已安裝程序的列表。它是這樣做的:Android:google文檔發送意圖?

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
sendIntent.setType("application/zip"); 
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ docPath)); 
startActivity(Intent.createChooser(sendIntent, "Email")); 

像Gmail和Dropbox這樣的應用程序出現在列表中,但Google Docs沒有。在使用相同文檔類型的競爭對手的應用中,Google文檔確實顯示爲意圖。我是否必須使用其他方法或意圖類型才能讓Google文檔顯示?

回答

8

您可以自己研究它,在Eclipse中運行DDMS或LogCat視圖,並觀察在您的或其他應用程序爲ACTION_SEND意圖啓動活動時編寫的調試日誌。

你會看到:

ActivityManager: START {act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras)} 

然後按照還會記錄實際上當你選擇的應用程序發送。你會看到這樣的事情:

ActivityManager: START {act=android.intent.action.SEND typ=application/zip flg=0x13000000 cmp=com.android.bluetooth/.opp.BluetoothOppLauncherActivity (has extras)} 

或者你也可以看到這一點:

ActivityManager: START {act=android.intent.action.SEND typ=*/* flg=0x13000000 cmp=com.google.android.apps.docs/.shareitem.UploadSharedItemActivity (has extras)} 

你在這裏看到的差異。一個應用程序設置實際的MIME類型=應用程序/ ZIP,其他應用程序設置MIME類型*/*。這意味着Docs應用程序不是用來發送zip文件的。

進一步探索,使用好的應用AppXPlore,打開文件,重新創建清單文檔應用的,並期待在塊與UploadSharedItemActivity(其匹配*/*類型的),其意圖濾波器塊上:

<activity label="Docs" name=".shareitem.UploadSharedItemActivity"> 
<intent-filter> 
    <action name="android.intent.action.SEND" /> 
    <action name="android.intent.action.SEND_MULTIPLE" /> 
    <category name="android.intent.category.DEFAULT" /> 
    <data mimeType="video/*" /> 
    <data mimeType="image/*" /> 
    <data mimeType="text/*" /> 
    <data mimeType="application/x-vnd.oasis.opendocument.spreadsheet" /> 
    <data mimeType="application/vnd.ms-powerpoint" /> 
    <data mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> 
    <data mimeType="application/msword" /> 
    <data mimeType="application/pdf" /> 
    <data mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> 
    <data mimeType="application/pdf" /> 
    <data mimeType="application/rtf" /> 
    <data mimeType="application/vnd.ms-excel" /> 
    <data mimeType="application/vnd.oasis.opendocument.text" /> 
    <data mimeType="application/vnd.sun.xml.writer" /> 
</intent-filter> 

這證明Docs應用程序旨在發送預定義的文件類型,Zip不在其中。

您的應用可以尊重Docs應用的這一決定,也可以使用*/* MIME類型發送,但在這種情況下,用戶可能會困惑爲什麼會有意外的應用不處理列表中的Zip文件。我會依靠第一個選項,並使用實際的MIME類型。

+0

謝謝,這是非常有幫助的。 (將授予21小時) – ab11 2012-02-02 20:43:19