将我的音乐播放器设置为默认音乐播放器

时间:2017-08-25 10:57:47

标签: android android-intent android-manifest android-mediaplayer intentfilter

我试图将我的应用设置为默认音乐播放器,但我发现了两个问题。

第一个是关于最明确的声明:根据Google音乐应用Manifest(manifest),我选择的活动的代码是:

    <activity
        android:name=".Dashboard"
        android:theme="@style/NoActionBar"
        android:screenOrientation="portrait"
        android:launchMode="singleTask">
        <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="content"/>
            <data android:host="media"/>
            <data android:mimeType="audio/*"/>
            <data android:mimeType="application/ogg"/>
            <data android:mimeType="application/x-ogg"/>
            <data android:mimeType="application/itunes"/>
        </intent-filter>
    </activity>

但如果我尝试打开音乐文件,我的应用程序就不在兼容的应用程序列表中(为什么?)。所以我尝试用这种方式来规范文件扩展名:

   <activity
        android:name=".Dashboard"
        android:theme="@style/NoActionBar"
        android:screenOrientation="portrait"
        android:launchMode="singleTask">
        <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="content"/>
            <data android:scheme="file" />
            <data android:mimeType="*/*" />
            <data android:pathPattern=".*\\.mp3" />
            <data android:host="*" />
        </intent-filter>
    </activity>

此代码对我有用,但我认为这不是最好的方法。 还有一些重要的内容过滤活动,我不知道这是不是问题。这是第一个活动(所以启动一个,登录活动)。他的宣言是

    <activity
        android:name=".LoginActivity"
        android:label="@string/app_name"
        android:theme="@style/NoActionBar"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.MUSIC_PLAYER" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.APP_MUSIC" />
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
    </activity>

此时我可以在启动.mp3文件时将我的应用设置为默认值,但此处第二个问题: 当我的应用程序在后台时,我无法从Uri拦截Intent。我尝试将getIntent().getData()放在OnCreate, OnResume and OnStart上,但当音乐文件被删除且我的应用程序位于后台时,数据始终为null。虽然当我的应用程序不在后台时它不为空。 我要做什么/有什么要解决的?

1 个答案:

答案 0 :(得分:0)

我现在可以回答我自己的问题了。感谢CommonsWare的评论,感谢他对另一个问题的旧回答:

关于清单,这条线对我有用,只需用以下方法更改我的实际意图过滤器:

.simonBoard

关于应用程序在后台时截获的非数据,我解决了这个问题:

position:relative

仍然感谢@CommonsWare。