文件类型的默认系统图标(Android)

时间:2017-05-18 14:24:36

标签: android

是否有API会返回给定文件扩展名的图标?

我需要在子视图中显示文件列表。 (这些是文件"附加"到记录,所以简单地嵌入文件浏览器并转储目录是不够的。)

我注意到内置的文件管理器(华硕)和第三方根浏览器似乎都显示了相同的图标类型,基于他们的"分组" (文字,图像......)。

例如,所有文本文件(.txt,.doc)都具有相同的图标,并且所有图像文件(.jpg,.png,...)都具有相同的图标(例外情况是ES文件资源管理器,具有.txt和.doc文件的特定图标。)

我还观察到他们每个人都有自己的图标集(文件资源管理器中的文字和图片图标与Root Explorer不同)。

因此,Android中的常见/最佳做法似乎是按内容显示文件,而不是打开它的关联程序(即使我指定默认应用程序打开某种文件类型,图标也没有&#39 ; t似乎改变了。)

为了避免重新发明轮子,我想简单地利用操作系统提供的API,当提供文件扩展名时会返回一个图标?

这样的API方法可以为需要执行此操作的任何其他应用程序提供一致性(通过使用统一的图标),并且还可以生成未来的校对代码,例如"密度配置文件"在某些时候被放弃(med,lg,xl,xxl,xxxl,...)。我想它还需要返回一个为当前屏幕密度格式化的图标。

注意:我宁愿不直接引用图标(即SELECT om.member_id FROM org_member om left join org_group_member ogm on om.member_id = ogm.id_menber WHERE om.org_id = 1 and ogm.is_pending = 'N' ORDER BY om.member_id ),以防它们的路径中断,但如果这是唯一的实现途径这就是它(也许我必须写一个包装器来抽象出来)。

1 个答案:

答案 0 :(得分:2)

  

是否有API会返回给定文件扩展名的图标?

不直接,因为Android不处理文件扩展名。

欢迎您:

  • 使用MimeTypeMap尝试派生文件扩展名的MIME类型
  • 制作用于具有该MIME类型的内容的Intent
  • 使用PackageManagerresolveActivity()queryIntentActivities()了解哪些活动(或多项活动)会处理此问题Intent
  • 使用结果信息以及PackageManager获取与活动相关联的图标

IOW,你做主屏幕发射器的工作,除了你不会使用LAUNCHER Intent

相关问题