每种文件类型都与其特定图标相关联。
现在,如果我选择somefilename.xxx那么我如何能够选择与*.xxx关联的图标,而不是未知文件的默认图标。
原始问题
如何获取.txt
或.doc
或.png
文件图标?比如现在我在选择filename.pdf
,如何获取filename.pdf
图标?例如
File f = new File("filename.pdf");
我的文件名是filename.pdf
. 如何获取此文件图标(Adobereader 图标)。
每种文件类型都与其特定图标相关联。
现在,如果我选择somefilename.xxx那么我如何能够选择与*.xxx关联的图标,而不是未知文件的默认图标。
原始问题
如何获取.txt
或.doc
或.png
文件图标?比如现在我在选择filename.pdf
,如何获取filename.pdf
图标?例如
File f = new File("filename.pdf");
我的文件名是filename.pdf
. 如何获取此文件图标(Adobereader 图标)。
尝试使用 PackageManager.queryIntentActivities:
final Intent innt = new Intent(Intent.ACTION_VIEW);
innt.setData(fileUri);
innt.setType("application/pdf");
final List<ResolveInfo> matches = getPackageManager().queryIntentActivities(innt, 0);
for (ResolveInfo match : matches) {
final Drawable icon = match.loadIcon(getPackageManager());
final CharSequence label = match.loadLabel(getPackageManager());
}
首先我想说的是,任何文件都不包含它的图标,一般来说,如果您没有安装办公室,您将不会获得 doc 图标或 powerpoint 图标。
所以它的系统会将图标与特定的文件类型相关联,所以这样走
为了实现您的目标,强烈建议您包含所有您希望使用的图标,例如,如果您选择some.png检查扩展名并将png.ico与此文件图标相关联
这样做你将不得不与每种类型的文件相关联。
编辑1:
你可以很容易地找到网络上的图标添加到你的drawable文件夹现在为每个文件名提取扩展名并根据扩展名设置图标这样你就可以实现你的目标
编辑 2:
要实现您的目标,请执行以下操作:
将所有图标文件添加到您的 res\drawable 文件夹以便于将所有图标文件名设置为其扩展名说使用doc.png作为doc 扩展名 for easyness
现在将所有文件扩展名映射到您的图标文件,例如检查文件扩展名,然后执行以下操作:
String ext = "某事";
switch(ext)
{
case "doc":
image.setImageResource(R.drawable.doc);
break;
case "exe":
image.setImageResource(R.drawable.exe);
break;
default :
image.setImageResource(R.drawable.default);
}
您可以创建一个接收路径的函数,并通过其名称中的文件扩展名,对应于可绘制对象。
fun getFileTypeIcon(path: String): Int {
val file = File(path)
val ext = MimeTypeMap.getFileExtensionFromUrl(file.name)
Log.i("ImagesExt", "$path ----> $ext")
return when (".$ext") {
".png", ".jpg", ".jpeg", ".gif", ".bmp" -> R.drawable.image
".mp3", ".wav", ".ogg", "midi" -> R.drawable.audio
".mp4", ".rmvb", ".avi", ".flv", ".3gp" -> R.drawable.video
".jsp", ".html", ".htm", ".js", ".php" -> R.drawable.web
".txt", ".c", ".cpp", ".xml", ".py", ".json", ".log" -> R.drawable.file
".xls", ".xlsx" -> R.drawable.file
".doc", ".docx" -> R.drawable.file
".ppt", ".pptx" -> R.drawable.file
".pdf" -> R.drawable.pdf
".jar", ".zip", ".rar", ".gz" -> R.drawable.zip
".apk" -> R.drawable.apk
else -> R.drawable.file
}
}