在Galaxy S3上打开音乐播放器

时间:2012-09-21 14:10:07

标签: android android-intent

以下代码适用于任何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
}

3 个答案:

答案 0 :(得分:1)

CATEGORY_APP_MUSIC是一个类别。直接打开这个意图是行不通的。

根据文件:

  

public static final String CATEGORY_APP_MUSIC

     

自:API等级15   与ACTION_MAIN一起使用以启动音乐应用程序。该活动应该能够播放,浏览或操纵存储在设备上的音乐文件。

     

注意:这不应该用作Intent的主键,因为它不会导致应用程序使用正确的操作和类别启动。相反,将它与makeMainSelectorActivity(String,String)一起使用,以在选择器中生成具有此类别的主Intent

您需要使用操作MAIN打开它并将类别设置为CATEGORY_APP_MUSIC

答案 1 :(得分:1)

我终于通过以下步骤找到了解决问题的方法:

  • 我从Android电子市场安装了“套餐名称”应用程序
  • 我发现音乐播放器的包名为“com.sec.android.app.music”
  • 我使用PackageManager
  • 中的“getLaunchIntentForPackage”方法创建了一个Intent
  • 我开始使用此Intent活动,找到音乐播放器

这个生成的转换为String的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
}

答案 2 :(得分: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();
     }