3

私の Android アプリケーションでは、ユーザーが amazon から曲を購入する機能を追加したいと考えています。最も簡単な方法は、Amazon mp3 アプリケーションを使用して Amazon ストアと通信することだと思います。デフォルトの音楽プレーヤーからこのコードを見つけました

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. ポップアップ画面全体を表示するのではなく、Amazon 検索のみを表示したいのですが、Amazon mp3 で直接検索するためにどのような意図を使用する必要がありますか。
  2. アフィリエイト パートナーのキーを Amazon mp3 に送信して、Amazon にクエリを実行するときにキーを含めるにはどうすればよいですか。

Shazam は amazon mp3 を直接使用していますが、使用すべき意図に関する情報が見つかりませんでした。どんな助けでも非常に役に立ちます。

4

2 に答える 2

3

これは公開 API ではありません。Shazam はどうやら Amazon と非公開の契約を結んでいるようだ。Amazon には多くの公開 APIがあるため、Amazon に直接連絡する価値があるかもしれません。しかし、他の大企業と同様に、私はあなたの返事を待っているつもりはありません。

于 2010-08-31T14:35:21.507 に答える
3

1. については、次のように一致するアクティビティのリストを評価することで、正しいアクティビティを判断することができます (i は作成したインテントです)。

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);

特定の固定文字列で始まるパッケージ名に依存するべきではないため、これは一種のハックですが、実際にはおそらく長く機能します。コードの変更に対処する準備をしてください (Amazon アクティビティが識別されない場合、Android は自動的にアクティビティ チューザーを表示します)。

2.については、申し訳ありませんが、これに関する情報はありません。

于 2010-08-31T15:33:49.520 に答える