使用意图启动Android音乐播放器

41

在Android中,是否可以从我的应用程序中打开音乐应用程序,还是最好在我的应用程序内编写一个全新的音乐应用程序。我宁愿使用他们的应用程序,因为用户已经熟悉它。

可以通过intent启动其他应用程序,包括音乐应用程序。因此,你可以使用他们的应用程序,并在你的应用程序中使用一个intent来启动它。这将使用户能够继续使用他们熟悉的音乐应用程序。
5个回答

84

我找到了一种方法来做到这一点。

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
intent.setDataAndType(Uri.parse(YOUR_SONG_PATH), "audio/*");  
startActivity(intent);

如何检查设备上是否可用媒体播放器应用程序。 - Qadir Hussain
这在 Nexus 6 上不起作用(在照片应用程序中打开) - nbarraille
2
@nbarraille 尝试使用 audio/mp3 而不是 audio/*。 - Fedor
对我来说,我需要使用startActivity(getContext(), intent, null)。现在它像魔法一样工作了!谢谢!!如果这有任何区别,我是从适配器内部执行此操作的。 - Dan
2
@Dan 我没有看到类似的方法startActivity(getContext(), intent, null)存在。 - immutable
显示剩余2条评论

23

要简单启动音乐播放器,请执行以下操作:

Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
startActivity(intent);

请问您能告诉我在编写完上述代码后应该做哪些事情吗?您的帮助将对我和其他人都非常有益。 - Hardik Vora
7
请注意,该操作已被弃用,推荐使用 CATEGORY_APP_MUSIC。 - Nik Reiman
1
MediaStore.INTENT_ACTION_MUSIC_PLAYER已经过时了! - Nizzy
1
此答案已过时,因为此操作已被弃用。请点击此链接以了解如何使用Intent.CATEGORY_APP_MUSIC:https://developer.android.com/reference/android/content/Intent#CATEGORY_APP_MUSIC。 - Sajib Acharya

2
这适用于旧版本,但由于最新版本中的安全更新,您可能会出现"FileUriExposed Exception"异常。为避免此情况,请使用以下代码。
 try{
        File file = new File(filepath);
        String mimeType = "audio/*";
        Uri fileURI = FileProvider.getUriForFile(
                getApplicationContext(),
                getApplicationContext()
                        .getPackageName() + ".provider", file);
        Intent intent = new Intent();
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.setDataAndType(fileURI, mimeType);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(intent);
    }catch (Exception e){
        Log.e(TAG,"-------------------------------------------------------FAILED TO PLAY SONG "+e);
    }

在AndroidManifest.xml中添加以下内容。
<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
</provider>

res/xml/ 下创建一个名为 provider_paths.xml 的文件。保留 HTML 格式,不要解释。
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
    name="external_files"
    path="."/>
</paths>

1

有多种方法可以实现默认音频播放器,但这些方法是设备和操作系统特定的。

使用此代码片段,您可以获取默认音频播放器。

try
    {
    Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
    File file = new File("audiofilepath"); 
    String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
    String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    myIntent.setDataAndType(Uri.fromFile(file),mimetype);
    startActivity(myIntent);
    }
    catch (Exception e) 
    {
         e.printStackTrace();
    }

0

你也可以尝试这个。

Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

此 API 已经过时。 - Divyesh_08

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接