将文件类型与app关联(Android)

时间:2016-12-11 16:32:50

标签: java android

我想要做的是让我的应用程序默认打开.mp3或.pk等文件。 我想处理文件,然后显示结果。这样做的可能方法是什么?

1 个答案:

答案 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