2014-01-13 4 views
2

Google Play Music больше не отображается в списке «Полное действие с использованием» для цели INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH. Я знаю, что это работало на 2.3, и Pandora и Spotify все еще появляются. Кто-нибудь сталкивался с этой проблемой раньше?Google Play Музыка больше не поддерживает media_play_from_search

Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH); 
intent.putExtra(SearchManager.QUERY, artistName); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Заглянув в музыкальном APK, я могу еще, что деятельность по-прежнему существует с правильным действием в намерениях фильтра, но, похоже, они отсутствуют в категории по умолчанию, который был оригинал размещен в blog post announcing this feature

<activity android:name="com.google.android.music.VoiceActionsActivity" android:exported="true" android:process=":ui" android:launchMode="singleTask"> 
    <intent-filter> 
     <action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" /> 
    </intent-filter> 
</activity> 
+0

Глядя на исходный код VoiceActionsActivity приводит меня к выводу, что они действительно только забыли эту линию. Медиа-поиск, похоже, реализован. Кто-нибудь знает другой способ запуска Google Play Музыки? Shazam в состоянии сделать это, запустив action.VIEW Intent с данными «https://play.google.com/store/music/album?id=Bf34irxf4drzf3c5lyvayxjovea&tid=song-T2bqvoiapytry5giuebuc5z6s4y&PaffiliateId=6332674904». Поэтому они каким-то образом извлекли внутренние идентификаторы песни. Может быть, через один из неописуемых GMusic-API? –

ответ

2

Я нашел обходной путь к этому: можно вручную установить имя для Intent к VoiceActionsActivity, как это:

Intent intent = new Intent(); 
intent.setClassName("com.google.android.music","com.google.android.music.VoiceActionsActivity"); 
intent.setAction(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH); 
intent.putExtra(SearchManager.QUERY, "chromeo - fancy footwork"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Google Mus ic явно все равно не появится в диалоговом окне выбора, но вы можете, например, добавить пользовательскую кнопку, которая откроет Google Music.

EDIT: Это действительно выполнимо, см. Этот вопрос: add or remove options from createChooser Однако это приведет к удалению кнопки «Установить по умолчанию» из приложения, поэтому это не совсем идеально. Другой вариант - создать собственный Chooser, используя getPackageManager().queryIntentActivities().

Смежные вопросы