当前位置: 首页 > news >正文

app定制网站开发电脑做系统教学网站

app定制网站开发,电脑做系统教学网站,深深圳的网站建设公司,标准分辨率是一般安卓提取apk图标我们有两种常用方法: 1、如果已经获取到 ApplicationInfo 对象(假设名为 appInfo),那么我们获取方法为: appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象2、 如果还没获取到 Applica…

一般安卓提取apk图标我们有两种常用方法:

1、如果已经获取到 ApplicationInfo 对象(假设名为 appInfo),那么我们获取方法为:

appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象

2、 如果还没获取到 ApplicationInfo 对象,我们一般会先获取 packageInfo 对象,然后通过它来获取 ApplicationInfo 对象,

但是这个方法会存在一个 bug ,就是需要设置 sourceDir 、publicSourceDir 两个源路径属性之后才能正常获取到图标。

然后设置上面两个属性之后,如果设置图标之后,相同包名,但是图标不相同的,就会导致后续获取的图标都相同,也就是说,包名相同图标不同,但是获取到的图标竟然都相同!

初步分析,原因应该出现在包名、两个源路径身上。
这应该是 Android SDK 自己写 loadIcon 代码的时候也没考虑过的使用情况。
可能是包名作为类似 Key 之类的,然后通过包名找到源路径,然后通过源路径获取图标。
所以如果获取一次之后,只设置源路径而不修改包名,那么获取的将是旧的源路径对应的图标。

在这里插入图片描述

为了解决这个问题,以下是我改良之后的 Kotlin 代码

fun getAppIconFromApkPath(context: Context, apkFilePath: String): Drawable? {// 1. 获取 包管理器,并通过包管理器、apk 路径获取 packageInfo val packageManager: PackageManager = context.packageManagerval packageInfo = packageManager.getPackageArchiveInfo(apkFilePath,0//PackageManager.GET_ACTIVITIES//GET_META_DATA)// 2. 访问、修改 packageInfo 对象的 applicationInfo 对象里面一些属性,比如packageName、sourceDir、publicSourceDir、loadIconpackageInfo?.applicationInfo?.apply {// 2.1. 【关键步骤】设置 包名val oldPackageName = packageName// 保存旧的包名,因为下面获取 apk 图标之后要恢复packageName = apkFilePath// 将其包名改成一个任意的、唯一的其他字符串,这样获取到的图标才不会冲突// 2.2. 【必须步骤】设置源路径:设置sourceDir和publicSourceDir属性为APK文件的路径。这样可以确保加载的是APK文件中的资源,而不是系统资源。sourceDir = apkFilePathpublicSourceDir = apkFilePath// 设置这两个路径之后,同时也会把相关包名的文件设置。所以会导致已安装的和其他文件图标不一样!!!// 2.3. 通过 loadIcon 来获取 apk 图标val icon = loadIcon(packageManager)// 2.4. 【关键步骤】获取到图标之后,先恢复前面修改的包名、源路径,最后才能返回图标packageName = oldPackageName// 恢复成原来的包名(修改之前的)sourceDir = null// 并且把其他的数据还原为nullpublicSourceDir = null// 2.5. 最后返回获取到的图标return icon}return null
}

注意:以上只是个人测试代码,不保证没有其他结果。其他情况请自行测试!

http://www.yayakq.cn/news/775949/

相关文章:

  • 宝安网站设计h5网站作用
  • 云主机添加网站yandex搜索引擎入口
  • 域名 放别人网站网站必须做ipv6
  • 牛魔王网站建设汕头市公司网站建设平台
  • 青岛建站公司流程乐亭中关村建站快车
  • 人工智能培训心得手机优化软件排名
  • 科技网站的一些案例展示wordpress 做api接口
  • 网站模板视频教程潍坊高端网站建设公司
  • 网站文字规范高端网站设计
  • 广州做网站开发网页设计培训机构哪家好
  • 有了网站怎么做优化网站建设哪里学
  • 网站开发合同付款方式wordpress怎么填写关键词
  • 外置硬盘可以做网站访问网站建设 精品课程
  • 网站空间免备案长沙旅游
  • 备案审核网站显示500建设银行杭州招聘网站
  • wordpress摄影社优化算法分类
  • 学习网站开发体会与感想如何登录建设部网站电脑版
  • 网站名拍卖价格做物流网站模块
  • 高端网站开发找苏州觉世品牌seo编辑招聘
  • 网站仿微商平台app
  • wordpress如何启用全站ssl有家装饰有限公司地址
  • 自己做网站的软件下载wordpress微信登录申请
  • 淘宝客网站建设漳州专业做网站
  • 网站新媒体建设装修设计效果图大全免费
  • 株洲营销型网站建设腾讯官网登录入口
  • 专做脚本的网站公司网站模板源码
  • 域名解析到服务器ip然后服务器怎么弄才能跳转到那个网站wordpress 会员收费
  • 网站设计怎么做超链接网站建设方案书 个人
  • 网站首页被降权的原因网站关键词密度查询
  • 网站打开微网站制作工具有哪些