0

次のコードは、任意の Android デバイス (api >= 8) で機能しますが、Samsung Galaxy S3 (音楽プレーヤーが見つかりません) では機能しません。

try {
    String name;
    try {
        name = (String) MediaStore.class.getDeclaredField("INTENT_ACTION_MUSIC_PLAYER").get(null);
    } catch(Exception e) {
        name = (String) Intent.class.getDeclaredField("CATEGORY_APP_MUSIC").get(null);
    }
    startActivity(new Intent(name));
} catch(Exception e) {
    // music player not found
}

サムスンのコンストラクター層はそれに何かありますか? Galaxy S3でメディアプレーヤーを開くソリューションはありますか?

更新として、間違いを修正しましたが、Galaxy S3 でまだメディアプレーヤーを取得できません。

try {
    try {
        // 8 <= API < 15
        String action = (String) MediaStore.class.getDeclaredField("INTENT_ACTION_MUSIC_PLAYER").get(null);
        Intent intent = new Intent(action);
        startActivity(intent);
    } catch(Exception e) {
        // 15 <= API
        String category = (String) Intent.class.getDeclaredField("CATEGORY_APP_MUSIC").get(null);
        Method method = Intent.class.getMethod("makeMainSelectorActivity", String.class, String.class);
        Intent intent = (Intent) method.invoke(null, Intent.ACTION_MAIN, category);
        startActivity(intent);
    }
catch(Exception e) {
    // music player not found
}
4

3 に答える 3

1

最終的に、次の手順で問題の解決策を見つけました。

  • Androidマーケットから「パッケージ名」アプリをインストールしてみました
  • 「com.sec.android.app.music」という名前の音楽プレーヤーのパッケージを見つけました
  • PackageManager から "getLaunchIntentForPackage" メソッドで Intent を作成しました
  • このインテントで活動を開始すると、音楽プレーヤーが見つかります

この生成されたインテントを文字列に変換すると、次のものが返されます。

Intent {
    act=android.intent.action.MAIN
    cat=[android.intent.category.LAUNCHER]
    flg=0x10000000
    pkg=com.sec.android.app.music
    cmp=com.sec.android.app.music/.MusicActionTabActivity
}

「CATEGORY_APP_MUSIC」が GS3 でしか動作しない理由がわかりません...

音楽プレーヤーを起動するコード:

try {
    String pkgname = "com.sec.android.app.music";
    PackageManager pkgmanager = getPackageManager();
    Intent intent = pkgmanager.getLaunchIntentForPackage(pkgname);
    startActivity(intent);
} catch(Exception e) {
    // music player not found
}
于 2012-09-25T23:34:15.820 に答える
1

CATEGORY_APP_MUSIC はカテゴリです。これでインテントを直接開いても機能しません。

ドキュメントによると:

public static final 文字列 CATEGORY_APP_MUSIC

導入されたバージョン: API レベル 15 音楽アプリケーションを起動するために ACTION_MAIN とともに使用されます。アクティビティは、デバイスに保存されている音楽ファイルを再生、参照、または操作できる必要があります。

注: これをインテントの主キーとして使用しないでください。アプリが正しいアクションとカテゴリで起動されないためです。代わりに、これを makeMainSelectorActivity(String, String) で使用して、セレクターでこのカテゴリを持つメイン インテントを生成します。

アクションMAINを使用して開き、カテゴリをCATEGORY_APP_MUSICとして設定する必要があります

于 2012-09-21T14:55:50.993 に答える
0

これはあなたを助けるかもしれません

 Intent intent = new Intent(Intent.ACTION_VIEW);
 intent.setDataAndType(Uri.fromFile(new File(mpath + "/" + filename)), "audio/"+extension);
 try {
   startActivity(intent);
 } catch ( Exception e ) {
   e.printStackTrace();
 }

また

Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
 try {
       startActivity(intent);
     } catch ( Exception e ) {
       e.printStackTrace();
     }
于 2012-09-21T14:20:05.570 に答える