与其特定图标关联的每种文件类型。
现在,如果我选择 somefilename.xxx ,那么我如何能够选择与 *。xxx 相关联的图标,而不是未知文件的默认图标。< / p>
原始问题
如何获取.txt
或.doc
或.png
文件图标?例如,现在我选择filename.pdf
,如何获取filename.pdf
图标?
例如
File f = new File("filename.pdf");
我的文件名是filename.pdf
。如何获取此文件图标(Adobereader图标)。
答案 0 :(得分:5)
尝试使用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());
}
答案 1 :(得分:2)
首先我想说的是任何文件都不包含它的图标说如果你没有办公室安装你赢了'获取doc图标或powerpoint图标。
所以它的系统可以将图标与特定的文件类型相关联,所以就这样吧
为了实现您的目标,强烈建议您包含您希望使用的所有图标 如果您选择 some.png 检查是否存在扩展并将 png.ico 与此文件图标相关联
这样做你必须与每种类型的文件相关联。
修改1:
您可以轻松找到网页上的图标添加到您的可绘制文件夹中现在为每个文件名提取扩展名并根据扩展名设置图标 这样你就可以实现目标
编辑2:
要实现您的目标,请执行以下操作:
将所有图标文件添加到res \ drawable文件夹,以便于设置所有内容
图标文件名作为其扩展说明使用 doc.png 作为 doc
扩展程序 for easyness
现在将所有文件扩展名映射到您的图标文件,例如检查文件 扩展,然后执行以下操作:
String ext =“Something”;
switch(ext)
{
case "doc":
image.setImageResource(R.drawable.doc);
break;
case "exe":
image.setImageResource(R.drawable.exe);
break;
default :
image.setImageResource(R.drawable.default);
}
答案 2 :(得分:0)
您可以创建一个包含路径的函数,并且其名称中的文件扩展名对应于drawable。
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
}
}