首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android-检测URL MIME类型?

Android 检测 URL MIME 类型

在 Android 应用中,常常需要处理不同的 MIME 类型数据,例如图片、音频、视频等。在 Android 中,可以使用 URLConnectionHttpUrlConnection 类来检测 URL 的 MIME 类型。以下是一个简单的示例代码:

代码语言:java
复制

import android.net.Uri;

import android.os.Build;

import android.support.annotation.NonNull;

import android.util.Log;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class UrlMimeDetector {

代码语言:txt
复制
private static final String TAG = "UrlMimeDetector";
代码语言:txt
复制
private static final String DEFAULT_MIME_TYPE = "application/octet-stream";
代码语言:txt
复制
private String mimeType = DEFAULT_MIME_TYPE;
代码语言:txt
复制
public UrlMimeDetector() {
代码语言:txt
复制
}
代码语言:txt
复制
public String getMimeType(String url) {
代码语言:txt
复制
    if (!url.startsWith("http")) {
代码语言:txt
复制
        return DEFAULT_MIME_TYPE;
代码语言:txt
复制
    }
代码语言:txt
复制
    Uri uri = Uri.parse(url);
代码语言:txt
复制
    String path = uri.getPath();
代码语言:txt
复制
    if (path == null) {
代码语言:txt
复制
        path = "";
代码语言:txt
复制
    }
代码语言:txt
复制
    String extension = getExtension(path);
代码语言:txt
复制
    if (extension == null) {
代码语言:txt
复制
        return DEFAULT_MIME_TYPE;
代码语言:txt
复制
    }
代码语言:txt
复制
    mimeType = getMimeTypeFromExtension(extension);
代码语言:txt
复制
    if (mimeType == null) {
代码语言:txt
复制
        return DEFAULT_MIME_TYPE;
代码语言:txt
复制
    }
代码语言:txt
复制
    return mimeType;
代码语言:txt
复制
}
代码语言:txt
复制
private String getExtension(String path) {
代码语言:txt
复制
    if (path.length() == 0) {
代码语言:txt
复制
        return null;
代码语言:txt
复制
    }
代码语言:txt
复制
    int dotIndex = path.lastIndexOf(".");
代码语言:txt
复制
    if (dotIndex == -1) {
代码语言:txt
复制
        return null;
代码语言:txt
复制
    }
代码语言:txt
复制
    return path.substring(dotIndex + 1);
代码语言:txt
复制
}
代码语言:txt
复制
private String getMimeTypeFromExtension(String extension) {
代码语言:txt
复制
    if (extension == null) {
代码语言:txt
复制
        return null;
代码语言:txt
复制
    }
代码语言:txt
复制
    if (extension.equals("pdf")) {
代码语言:txt
复制
        return "application/pdf";
代码语言:txt
复制
    } else if (extension.equals("png")) {
代码语言:txt
复制
        return "image/png";
代码语言:txt
复制
    } else if (extension.equals("jpg") || extension.equals("jpeg")) {
代码语言:txt
复制
        return "image/jpeg";
代码语言:txt
复制
    } else if (extension.equals("gif")) {
代码语言:txt
复制
        return "image/gif";
代码语言:txt
复制
    } else if (extension.equals("bmp")) {
代码语言:txt
复制
        return "image/bmp";
代码语言:txt
复制
    } else if (extension.equals("txt")) {
代码语言:txt
复制
        return "text/plain";
代码语言:txt
复制
    } else if (extension.equals("json")) {
代码语言:txt
复制
        return "application/json";
代码语言:txt
复制
    } else if (extension.equals("xml")) {
代码语言:txt
复制
        return "text/xml";
代码语言:txt
复制
    } else if (extension.equals("zip")) {
代码语言:txt
复制
        return "application/zip";
代码语言:txt
复制
    } else if (extension.equals("7z")) {
代码语言:txt
复制
        return "application/x-7z-compressed";
代码语言:txt
复制
    } else if (extension.equals("flv")) {
代码语言:txt
复制
        return "video/x-flv";
代码语言:txt
复制
    } else if (extension.equals("mp4")) {
代码语言:txt
复制
        return "video/mp4";
代码语言:txt
复制
    } else if (extension.equals("mov")) {
代码语言:txt
复制
        return "video/quicktime";
代码语言:txt
复制
    } else if (extension.equals("avi")) {
代码语言:txt
复制
        return "video/x-msvideo";
代码语言:txt
复制
    } else if (extension.equals("wmv")) {
代码语言:txt
复制
        return "video/x-ms-wmv";
代码语言:txt
复制
    } else if (extension.equals("html")) {
代码语言:txt
复制
        return "text/html";
代码语言:txt
复制
    } else if (extension.equals("css")) {
代码语言:txt
复制
        return "text/css";
代码语言:txt
复制
    } else if (extension.equals("js")) {
代码语言:txt
复制
        return "application/javascript";
代码语言:txt
复制
    } else if (extension.equals("json")) {
代码语言:txt
复制
        return "application/json";
代码语言:txt
复制
    } else if (extension.equals("pdf")) {
代码语言:txt
复制
        return "application/pdf";
代码语言:txt
复制
    } else if (extension.equals("txt")) {
代码语言:txt
复制
        return "text/plain";
代码语言:txt
复制
    } else if (extension.equals("xml")) {
代码语言:txt
复制
        return "text/xml";
代码语言:txt
复制
    } else if (extension.equals("svg")) {
代码语言:txt
复制
        return "image/svg+xml";
代码语言:txt
复制
    } else if (extension.equals("ttf")) {
代码语言:txt
复制
        return "application/x-font-ttf";
代码语言:txt
复制
    } else if (extension.equals("
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库

    编译 Luajit 库,的确是一个挑战。因为官网的教程,在当前版本的 Xcode 和 NDK 环境中,已经不适用了。以前只是编译了适用于真机的 Luajit 库。最近在尝试编译模拟器 Luajit 库,就顺便梳理了下 Luajit 库的编译经验,供以后查阅。网上的讨论也是有一些,但是相当一部分都已经过时。或许等你看到这篇文章的时候,可能也只是能获得一些可能的经验来解决自己的编译问题。所以说,了解一些基本的编译知识,能勉强看懂 Luajit 的 make 文件,还是很有必要的。本篇是关于 Luajit 静态库的,如果你想找的是如何编译适用于移动端的 Luajit 字节码,可以直接看 【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录。

    00
    领券