在我的Android应用程序中集成amazon mp3

时间:2010-08-31 14:00:53

标签: android key amazon affiliate

在我的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)。但这里有一些我想做的事情 -

  1. 我不想显示整个弹出屏幕但只显示亚马逊搜索,我应该用什么意图直接在亚马逊mp3中搜索。
  2. 如何将我的联盟合作伙伴密钥发送到亚马逊mp3,以便在查询亚马逊时将其包括在内。
  3. Shazam直接使用亚马逊mp3,但我找不到任何信息我应该使用的意图。在此先感谢任何帮助将非常有帮助。

2 个答案:

答案 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.抱歉,我没有相关信息。