我想创建一个MEDIA_PLAY_FROM_SEARCH https://developer.android.com/guide/components/intents-common.html#PlaySearch(或其他)意图,将在任何主要 Android 音乐应用程序中搜索并播放歌曲。我希望以下命令行适用于多个应用程序:
adb shell am start -a "android.media.action.MEDIA_PLAY_FROM_SEARCH" -e android.intent.extra.focus "vnd.android.cursor.item/*" -e query "yellow\ submarine\ by\ the\ beatles" -f 268435456
这对应于代码:
Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS, "vnd.android.cursor.item/*");
intent.putExtra(SearchManager.QUERY, "yellow submarine by the beatles");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这会在我的 Pixel 2 上启动一个选择器,列出可以处理该请求的不同应用程序。如果我选择 Google Play 音乐,它会播放黄色潜水艇。如果我选择 Spotify,它会进行搜索但不会播放,即使我订阅了 Spotify 高级版。 YouTube Music 也只进行搜索。
我故意不指定查询是艺术家还是歌曲(或两者,如本例所示),因为我想将决定权留给音乐应用程序。
如果我删除,行为是相同的(在 Google Play Music 和 Spotify 中)MediaStore.EXTRA_MEDIA_FOCUS
额外和标志:
$ adb shell am start -a "android.media.action.MEDIA_PLAY_FROM_SEARCH" -e query "yellow\ submarine\ by\ the\ beatles"
我需要什么才能让它在任何主要音乐应用程序(即 Google Assistant 支持的应用程序)中播放歌曲?