Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的android应用程序中集成amazon mp3_Android_Key_Amazon_Affiliate - Fatal编程技术网

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

在我的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

在我的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, 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)。但以下是我想做的一些事情-

  • 我不想显示整个弹出屏幕,只想显示amazon搜索,我应该使用什么意图直接在amazon mp3中搜索
  • 我如何将我的附属合作伙伴密钥发送到amazon mp3,以便在查询amazon时将其包含在内

  • 沙扎姆直接使用亚马逊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);