以下代码适用于任何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
}
答案 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)
我终于通过以下步骤找到了解决问题的方法:
这个生成的转换为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();
}