在我的android应用程序中集成amazon mp3
在我的android应用程序中,我想添加用户从亚马逊购买歌曲的功能。我认为最简单的方法是使用AmazonMP3应用程序与AmazonStore进行通信。我从默认音乐播放器中找到了这段代码在我的android应用程序中集成amazon mp3,android,key,amazon,affiliate,Android,Key,Amazon,Affiliate,在我的android应用程序中,我想添加用户从亚马逊购买歌曲的功能。我认为最简单的方法是使用AmazonMP3应用程序与AmazonStore进行通信。我从默认音乐播放器中找到了这段代码 Intent i = new Intent(); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setAction(MediaStore.INTENT_ACTION_MEDIA_SEARCH); i.putExtra(SearchManager.QUERY, mSon
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)。但以下是我想做的一些事情-
沙扎姆直接使用亚马逊mp3,但我找不到任何我应该使用的信息。提前谢谢,任何帮助都会很有帮助 它不是一个公共API;沙扎姆显然与亚马逊有私人协议。直接联系Amazon可能是值得的,因为他们有很多公共API,而这一个显然符合他们的利益。但像任何大公司一样,我不会屏住呼吸等待答复。至于1,你可以通过评估类似于以下的匹配活动列表来确定正确的活动(我是你创建的意图):
List info=getPackageManager();
字符串packageName=null,className=null;
对于(信息解析程序:信息){
if(r.activityInfo.packageName.startsWith(“com.amazon.mp3”)){
packageName=r.activityInfo.packageName;
className=r.activityInfo.name;
打破
}
}
if(packageName!=null&&className!=null)
i、 setClassName(packageName,className);
星触觉(i);
这是一种黑客行为,因为不应该依赖以某个固定字符串开头的包名,但事实上它可能会工作很长时间。只需在代码中做好准备,以应对它的变化(如果未识别亚马逊活动,android将自动显示活动选择器)
至于第二条,对不起,我没有这方面的信息。我想回应科林的观点,并补充说Mojo Risin试图做的是违反亚马逊当前的TOS。除非你得到他们的祝福,否则他们禁止使用他们的API或affliate链接通过移动应用程序进行销售。你怎么会得到他们的祝福呢?为了实现这一点,您需要联系哪里/谁?
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);