您可以自己研究它,在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类型。
谢谢,这是非常有帮助的。 (将授予21小时) – ab11 2012-02-02 20:43:19