java - 在android中使用默认应用程序打开文件

标签 java android android-intent

我正在 android 中制作一个文件浏览器。因此,我希望当单击目录以外的任何文件时,我想获得可以打开它的应用程序的建议,如果没有应用程序,则显示一个 dailog。我尝试了一些解决方案,但没有任何效果,所以,现在,我只是显示该文件不是 toast 中的目录

部分代码如下:

protected void onListItemClick(ListView l, View v, int position, long id) {
    String filename = (String) getListAdapter().getItem(position);
    if (path.endsWith(File.separator)) {
        filename = path + filename;
    } else {
        filename = path + File.separator + filename;
    }
    if (new File(filename).isDirectory()) {
        Intent intent = new Intent(this, ListFileActivity.class);
        intent.putExtra("path", filename);
        startActivity(intent);
    } else {
        Toast.makeText(this, filename + " is not a directory", Toast.LENGTH_LONG).show();
    }
}

最佳答案

Android 有一些内置的 Intent Action Type这可以帮助您打开或查看特定文件,但为此您需要知道要处理的文件类型。

假设如果您有可以使用的文档类型分类的文件类型,

ACTION_OPEN_DOCUMENT 具有特定的 MIME_TYPE(Android 4.4 或更高版本)

或者如果你要处理一些媒体文件(音频/视频)

你可以使用,

ACTION_VIEW

要识别特定文件的MIME_TYPE,您可以使用函数

guessContentTypeFromName(字符串 url) Link

getMimeTypeFromExtension(字符串扩展) Link

关于java - 在android中使用默认应用程序打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131007/

相关文章:

java - 由 java.lang.IllegalArgumentException : MediaButtonReceiver component may not be null 引起

android - Android 中的应用内结算。具体方法?

android - 如何将应用程序注册为家庭替代品

android - 在 cordova 内打开适用于 ios、android 和 windows 的外部应用程序

android - 从右到左增加 Android 按钮的宽度

java - 可以在java中使用setter跨类

java - 使用 c3p0 时 MySQL Hibernate 连接问题

java - 在 Controller 内创建的 header 的单元测试

android - 以编程方式设置背景颜色

android - intent.getCategories() 为空,尽管它已设置