如何在手机的默认应用程序上打开 mp3 文件?

Posted

技术标签:

【中文标题】如何在手机的默认应用程序上打开 mp3 文件?【英文标题】:How to open mp3 file on phone's default app? 【发布时间】:2021-10-31 13:33:05 【问题描述】:

目前我的代码是这样的:

当用户在我的文件管理器中单击音频文件时,它应该在他们的默认音频应用程序中打开它,但文件管理器应用程序只是崩溃了。 apk 和 pdf 文件也会发生这种情况,但我从代码中删除了这些文件以专注于 mp3 问题。

另外,如果有人知道一种无需指定扩展名即可打开文件的通用方法,那就太棒了!

提前感谢,我的朋友们。

Intent intent = new Intent();
                            intent.setAction(Intent.ACTION_VIEW);
                            if (files[position].toString().contains(".png") || files[position].toString().contains(".jpg") || files[position].toString().contains(".jpeg")) 
                                intent.setDataAndType(Uri.parse(files[position].toString()), "image/jpeg");
                             else if (files[position].toString().contains(".mp4")) 
                                intent.setDataAndType(Uri.parse(files[position].toString()), "video/*");
                             else if (files[position].toString().contains(".mp3")) 
                                intent.setDataAndType(Uri.parse(files[position].toString()), "audio/*");
                             else if (files[position].toString().contains(".doc") || files[position].toString().contains(".docx")) 
                                intent.setDataAndType(Uri.parse(files[position].toString()), "application/msword");
                             else 
                                intent.setDataAndType(Uri.parse(files[position].toString()), "*/*");
                            
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(intent);

【问题讨论】:

【参考方案1】:

你可以像这样使用意图,

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

【讨论】:

当我尝试打开一个 mp3 文件时,应用程序不断崩溃,即使使用此代码也是如此。【参考方案2】:

我不明白您在代码中做了什么,但是如果您有 mp3 文件的 uri,请使用 intent。

Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

编辑:我检查了我的代码库是否有这样的用途,我打开了一个 txt 文件进行导入。设置类型总是让我的应用程序崩溃,因此我将类型设置为“* /*”。请参阅下面的类似代码。

public void importDictionary() 
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*"); //needed to not make it crash
startActivityForResult(intent, 2);

之后覆盖 onActivityResult 以执行操作

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 2 && resultCode == Activity.RESULT_OK) 
    // your code here
    

【讨论】:

如果我使用此代码,它会与任何文件一起崩溃。

以上是关于如何在手机的默认应用程序上打开 mp3 文件?的主要内容,如果未能解决你的问题,请参考以下文章

html文件在安卓手机上怎么打开?

将 Java 手机/电话上的通话保存为 mp3 或任何音频格式/文件

安卓手机如何打开.dot文件?

单击 MP3 文件时打开媒体播放器

第 3 方应用程序“A”如何让 iOS 设备新手用户打开由第 3 方应用程序“B”下载的 MP3 文件?

怎么创建关联