интеграция амазонка mp3 в моем приложении для Android - PullRequest
3 голосов
/ 31 августа 2010

в моем приложении для Android я хочу добавить функциональность пользователю, чтобы купить песню от Amazon.Самый простой способ сделать это, я думаю, использовать mp3 приложение Amazon для связи с Amazon Store.Я нашел этот фрагмент кода из музыкального проигрывателя по умолчанию

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. Как я могу отправить свой ключ партнера по партнерским программам в amazon mp3, чтобы он мог включить его при запросе к amazon.

Shazam использует напрямую amazon mp3, но я не смог найти никакой информации, для чего яследует использовать.Заранее спасибо любая помощь будет очень полезна.

Ответы [ 2 ]

3 голосов
/ 31 августа 2010

что касается 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 автоматически отобразит средство выбора активности, если действие Amazon не определено).

что касается 2., извините, у меня нет информации об этом.

3 голосов
/ 31 августа 2010

Это не публичный API; У Shazam, очевидно, есть частная договоренность с Amazon. Возможно, стоит связаться напрямую с Amazon, поскольку у них есть лот публичных API, и этот, безусловно, отвечает их интересам. Но, как любая крупная компания, я бы не стал задерживать ваш ответ.

...