我試圖給出將我的應用設置爲默認音樂播放器的可能性,但是我發現了兩個問題。將我的音樂播放器設置爲默認音樂播放器
第一個是關於manifst聲明:根據谷歌音樂應用程序清單(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>
但是,如果我嘗試打開一個音樂文件,我的應用程序不在兼容應用程序列表中(爲什麼?)。所以,我想specyfing文件擴展名,以這樣的方式
<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>
此代碼爲我工作,但我想這是不是最好的方式。 還有一些重要的內容過濾活動,我不知道它是否是問題。這是第一個活動(所以啓動一個,登錄活動)。他maifest聲明
<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
攔截時,我應用程序是在背景上。我試圖在OnCreate, OnResume and OnStart
上輸入getIntent().getData()
,但是當音樂文件被粘連並且我的應用在後臺時,數據始終爲null
。當我的應用程序不在後臺時它不爲空。 哪裏有/我需要做什麼來解決?
「但它不適合我」 - 請解釋「不適合我」的含義。 「當我的應用程序在後臺時,我無法攔截意圖中的Uri」 - 您是否重寫了'onNewIntent()'? – CommonsWare
@CommonsWare當「嘗試從文件資源管理器打開音樂文件(我使用es文件探索)」時,意味着我的應用程序不在兼容應用程序的列表中。 不,我不重寫onNewIntent,我有嗎? –
「我不重寫onNewIntent,我有辦法嗎?」 - 如果您有一個正在重用的活動實例,則第二個和隨後的「Intents」將交給'onNewIntent()',而不是'onCreate()'。 「我的意思是,當我嘗試從文件瀏覽器打開音樂文件時,我的應用程序不在兼容的應用程序列表中」 - 大概,您的文件資源管理器使用'Uri'值與'file'方案,至少Android 6.0及更高版本。 Android 7.0+對使用該方案有限制。 – CommonsWare