在安卓派中,你可以使用以下代码示例来获取文件名或文件路径:
import android.net.Uri;
import android.os.Environment;
import android.provider.OpenableColumns;
import android.webkit.MimeTypeMap;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class FileUtils {
public static String getFileNameFromUri(Context context, Uri uri) {
String fileName = null;
if (uri.getScheme().equals("content")) {
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
if (fileName == null) {
fileName = uri.getPath();
int cut = fileName.lastIndexOf('/');
if (cut != -1) {
fileName = fileName.substring(cut + 1);
}
}
return fileName;
}
public static String getFileExtension(String fileName) {
String extension = null;
int dotIndex = fileName.lastIndexOf(".");
if (dotIndex != -1) {
extension = fileName.substring(dotIndex + 1);
}
return extension;
}
public static File createImageFile(Context context) throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
String imageFileName = "IMG_" + timeStamp + ".";
File storageDir = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName,
getFileExtension(imageFileName),
storageDir
);
return image;
}
public static String getMimeType(Context context, Uri uri) {
String mimeType = null;
if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
ContentResolver cr = context.getContentResolver();
mimeType = cr.getType(uri);
} else {
String fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri.toString());
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension.toLowerCase());
}
return mimeType;
}
}
此代码示例包含以下方法:
getFileNameFromUri()
:用于从给定的Uri中获取文件名。它首先检查Uri的scheme,如果是"content",则使用OpenableColumns.DISPLAY_NAME
查询Uri来获取文件名。否则,它将尝试从Uri的路径中提取文件名。getFileExtension()
:用于从文件名中获取文件扩展名。createImageFile()
:用于创建一个临时图像文件。它使用当前的时间戳作为文件名,并将文件保存在应用的外部文件目录中。getMimeType()
:用于获取给定Uri的MIME类型。它首先检查Uri的scheme,如果是"content",则使用ContentResolver
来获取MIME类型。否则,它将从Uri的路径中提取文件扩展名,并使用MimeTypeMap
来获取相应的MIME类型。你可以根据自己的需要使用这些方法来解决无法获取文件名或文件路径的问题。
上一篇:安卓派上的“Room”
下一篇:安卓Paytm支付网关响应