在我的Android应用程序中,我想添加用户从亚马逊购买歌曲的功能。最简单的方法是使用amazon mp3应用程序与亚马逊商店进行通信。我从默认音乐播放器
中找到了这段代码Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setAction(MediaStore.INTENT_ACTION_MEDIA_SEARCH);
i.putExtra(SearchManager.QUERY, mSong.getArtits() + " " + mSong.getName());
i.putExtra(MediaStore.EXTRA_MEDIA_ARTIST, "artist");
i.putExtra(MediaStore.EXTRA_MEDIA_ALBUM, "album");
i.putExtra(MediaStore.EXTRA_MEDIA_TITLE, mSong.getName());
i.putExtra(MediaStore.EXTRA_MEDIA_FOCUS, "audio/*");
startActivity(Intent.createChooser(i, "Search for " + mSong.getName()));
显示选择搜索歌曲的位置的菜单(浏览器,youtube,amazon mp3)。但这里有一些我想做的事情 -
Shazam直接使用亚马逊mp3,但我找不到任何信息我应该使用的意图。在此先感谢任何帮助将非常有帮助。
答案 0 :(得分:3)
这不是公共API; Shazam显然与亚马逊有私人安排。可能值得直接联系亚马逊,因为他们有一个很多的公共API,而这个似乎符合他们的利益。但就像任何一家大公司一样,我不会屏住呼吸回应。
答案 1 :(得分:3)
对于1.,您可以通过评估这样的匹配活动列表(我是您创建的意图)来尝试确定正确的活动:
List<ResolveInfo> info = getPackageManager().queryIntentActivities(i, 0);
String packageName=null, className=null;
for ( ResolveInfo r: info){
if ( r.activityInfo.packageName.startsWith("com.amazon.mp3")){
packageName=r.activityInfo.packageName;
className=r.activityInfo.name;
break;
}
}
if ( packageName != null && className != null)
i.setClassName(packageName, className);
startActivity(i);
这是一种黑客攻击,因为不应该依赖于以某个固定字符串开头的包名,但实际上它可能会工作很长时间。只需准备好你的代码来处理它的变化(如果没有识别出亚马逊活动,android会自动显示活动选择器。)
至于2.抱歉,我没有相关信息。