我想要做的是让我的应用程序默认打开.mp3或.pk等文件。 我想处理文件,然后显示结果。这样做的可能方法是什么?
答案 0 :(得分:2)
首先,您不能将您的应用作为任何特定类型内容的默认应用。如果有其他应用支持该类型的内容,则用户可以选择要使用的应用。它是用户的设备,而不是您的设备。
其次,Android上没有广泛使用文件扩展名,它们的使用将会稳步下降。 MIME类型更可靠。
要成为打开特定MIME类型文件的选项,请实现一项活动,其中清单中的<activity>
元素具有<intent-filter>
ACTION_VIEW
,即所需的MIME类型(或MIME类型通配符模式),以及适合您的用例的类别和方案。例如:
<activity android:name="com.android.gallery3d.app.MovieActivity"
android:label="@string/movie_view_label"
android:configChanges="orientation|keyboardHidden|screenSize">
<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="rtsp" />
</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" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="video/mpeg4" />
<data android:mimeType="video/mp4" />
<data android:mimeType="video/3gp" />
<data android:mimeType="video/3gpp" />
<data android:mimeType="video/3gpp2" />
<data android:mimeType="video/webm" />
<data android:mimeType="video/avi" />
<data android:mimeType="application/sdp" />
</intent-filter>
<intent-filter>
<!-- HTTP live support -->
<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" />
<data android:scheme="https" />
<data android:mimeType="audio/x-mpegurl" />
<data android:mimeType="audio/mpegurl" />
<data android:mimeType="application/vnd.apple.mpegurl" />
<data android:mimeType="application/x-mpegurl" />
</intent-filter>
</activity>
(来自this AOSP app)