Android桌面图标布局,android安装运行launcher并修改桌面图标-程序员宅基地

技术标签: Android桌面图标布局  

以系统及程序的方式安装和运行Launcher,才能在Launcher启动的时候就让默认的AppWidget程序显示出来。否则将会出现

java.lang.SecurityException: bindGagetId appWidgetId=843

provider=ComponentInfo{com.android.quicksearchbox/com.android.quicksearchbox.SearchWidgetProvider}:

User 10047 does not have android.permission.BIND_APPWIDGET

这样的错误。

emulator -avd 1024_600_API8 -partition-size 128

——此处的 -partition-size 128 表示为

把system分区扩大为128MB,若有需要,此处可以设置为更大的system分区

此处的 1024_600_API8 表示为 模拟器名称换成你们自己的就可以

adb remount

——使得/system分区可以进行写操作, 否则下面的push指令将会出现形如“failed to copy

'Launcher2_custom.apk' to system/app/Launcher2_meiling.apk':

Read-only file system”的错误提示,真机亦是如此。

adb push Launcher2_custom.apk /system/app

当不再需要这个定制化的Launcher apk的时候,直接 adb

shell模式下删除/system/app下的对应apk文件即可,删除时要有超级用户权限

rm /system/app/Launcher2_custom.apk

1、/packages/apps/Launcher/res/xml/default_workspace.xml中记录了系统初始化或者恢复出厂设置时桌面上图标的排列。Launcher程序第一次运行完毕以后,会在/data/data/com.android.launcher/databases/launcher.db中创建记录,里面有所有当前的桌面图标。以后每次启动只会从这里读取桌面图标。

下面简单分析一下default_workspace.xml:

default_workspace.xml中,支持的标签有:

favorite:应用程序快捷方式。

shortcut:链接,如网址,本地磁盘路径等。

search:搜索框。

clock:桌面上的钟表Widget

支持的属性有:

launcher:title,图标下面的文字,目前只支持引用,不能直接书写字符串。

launcher:icon,图标引用。

launcher:uri,链接地址。

launcher:packageName,应用程序的包名。

launcher:className,应用程序的启动类名。

launcher:screen,图标所在的屏幕编号。

launcher:x,图标在横向排列上的序号。

launcher:y,图标在纵向排列上的序号。

launcher:spanX="9"

——这个AppWidget在screen中的cell跨度-x

launcher:spanY="5" ——这个AppWidget在screen中的cell跨度-y

LauncherProvider.java里面的loadFavorites方法负责解析。

2、在Launcher2源码的Launcher.java中,定义如下:

static final

int SCREEN_COUNT = 4; ——Launcher包含几个screen

static final

int DEFAULT_SCREEN = 0; ——Launcher启动后默认显示的是哪个screen

static final

int NUMBER_CELLS_X = 9; ——每个screen所对应的CellLayout中横向包括多少个Cells

static final

int NUMBER_CELLS_Y = 5; ——每个screen所对应的CellLayout中纵向包括多少个Cells

3、而在default_workspace.xml中添加的AppWidget的例子如下:

launcher:packageName="com.ml.apps"

launcher:className="com.ml.apps.TimeTemperInfoReceiver"

launcher:screen="0" ——在哪个screen中显示这个widget

launcher:x="0" ——这个AppWidget在screen中的起始cell-x

launcher:y="0" ——这个AppWidget在screen中的起始cell-y

launcher:spanX="9" ——这个AppWidget在screen中的cell跨度-x

launcher:spanY="5" ——这个AppWidget在screen中的cell跨度-y

/>

4、上面在default_workspace.xml中添加的appwidget布局必须和对应应用程序中的AppWidget设定相适应,否则无法正确显示。AppWidget对应应用程序的res/xml/下包含一个widget布局描述文件,例如home_widget_provider.xml,对应内容如下:

http://schemas.android.com/apk/res/android"

android:minHeight="368dp"

android:minWidth="664dp"

android:initialLayout="@layout/cell_main"

android:updatePeriodMillis="0">

注意:

此处在设置android:minHeight和android:minWidth的时候,实际是设置widget占据了多少个cell。

根据实践效果来看,貌似无论在dimens.xml文件中定义的workspace_cell_width 和

workspace_cell_height 的具体值是多少,在这里x和y方向一律按照每个cell 74dp

来设置android:minHeight和android:minWidth的值,即74×cell_numbers-2。例如上述(3)中定义的launcher:spanX="9",launcher:spanY="5",则在此处

android:minHeight="368dp"(5×74-2),android:minWidth="664dp"(9*74-2)

5、经过上述4步,基本工作就完成了,然后将AppWidget对应的应用程序和Launcher程序push进/system分区,即:

adb push TimerTemperInfo.apk /system/app

adb push Launcher2_meiling.apk /system/app

即可。实践表明这两个apk程序push的顺序似乎没有什么影响

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39927408/article/details/117490491

智能推荐

获取当前路由地址_能获取前端路由的地址吗-程序员宅基地

文章浏览阅读103次。【代码】获取当前路由地址。_能获取前端路由的地址吗

北斗卫星在桥隧坡施工中的技术应用与创新-程序员宅基地

文章浏览阅读253次。幸运的是,随着我国北斗卫星导航系统的完善和推广应用,其在桥隧坡施工中的技术运用不断深化,成为提高施工效率、确保工程质量的利器。在桥隧坡等基础设施建设中,运用北斗系统实现施工设备的智能调度、资源优化配置等,不仅提高了施工智能化水平,也为保障工程建设安全提供了有力支持。对于坡面工程,北斗卫星导航系统的作用同样不可忽视。隧道施工环境复杂,传统的测量技术往往难以满足精度要求,在此情况下,北斗系统可通过设置多个基准站,实时监控隧道施工过程中的线路偏差,确保隧道掘进方向的精准,大幅提升隧道施工的安全性和可靠性。

Android 数据存储 (二)文件存储_android 文件存储内部价存储项目报错-程序员宅基地

文章浏览阅读1.2k次。转载请注明出处:http://blog.csdn.net/vnanyesheshou/article/details/71106622之前说了下Android中Sharedpreferences、SQLite Databases的使用,不太会这两个的可以参考这两篇文章: Android 数据存储 (一)SharedPreferences、 Android 数据存储 (三)SQLite Databases。_android 文件存储内部价存储项目报错

猿实战17——实现你未必知晓的运费模板-程序员宅基地

文章浏览阅读621次。猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,变身猿人找到工作不是问题。还等什么呢?..._前端运费模板怎么写

使用腾讯云部署我的个人网站-程序员宅基地

文章浏览阅读79次。使用wget然后解压 tar -xvf node-v18.17.1-linux-x64.tar.xz去到目录下测试node是否安装成功,cd node-v18.17.1-linux-x64/bin,发现失败原因,node版本过高,当前centos版本不支持,解决办法,安装16.20.2版本node,测试安装成功。设置全局软链使用,可以在用户家目录~下使用mv node-v16.20.2-linux-x64 nodejs修改名字初次设置时候源文件路径没有正确,ln -s 源文件路径 目标路径。

存储卡乱码:原因、恢复与预防全攻略_存储卡 文件 电脑 乱码-程序员宅基地

文章浏览阅读906次,点赞20次,收藏17次。最后,不当的操作,如错误的格式化或删除操作,也可能导致乱码问题的发生。在未来使用存储卡的过程中,我们应更加注意数据的安全性和完整性,确保我们的数字生活更加顺畅和美好。首先,我们要明白,存储卡内部的数据是以特定的编码和格式进行存储的。在使用数之寻软件时,我们只需按照软件的提示进行操作,选择相应的存储卡进行扫描,并等待软件完成扫描和修复过程。在扫描过程中,软件会列出所有可恢复的文件,我们可以根据需要选择要恢复的文件,并将其保存到安全的位置。同时,我们需要提前了解数据恢复服务的流程和费用,以便做好相应的准备。_存储卡 文件 电脑 乱码

随便推点

Hexo博客中使用标签云hexo-tag-cloud_hexo插入标签云-程序员宅基地

文章浏览阅读9.6k次。Hexo博客中使用标签云hexo-tag-cloud在github上标签云使用教程中,按照步骤添加配置后不能添加标签云,后考虑解决方案如下: 1. 添加依赖问题 - go into your hexo system folder, and add depandence “hexo-tag-cloud”: “2.0.*” to package.json在根目录文件package.json文件_hexo插入标签云

Spring Boot 注入外部配置到应用内部的静态变量_springboot环境变量怎么动态注入到静态变量中-程序员宅基地

文章浏览阅读454次。Spring Boot允许你外部化你的配置,这样你就可以在不同的环境中使用相同的应用程序代码,你可以使用properties文件、YAML文件、环境变量和命令行参数来外部化配置,属性值可以通过使用@Value注解直接注入到你的bean中,通过Spring的Environment抽象访问,或者通过@ConfigurationProperties绑定到结构化对象。那么如何进行Spring Boot ..._springboot环境变量怎么动态注入到静态变量中

Unity遇到VSCODE无法自动补全解决办法_attempted to update project that is not loaded: as-程序员宅基地

文章浏览阅读2.3k次。Unity遇到VSCODE无法自动补全解决办法错误解决办法方法1方法2错误 Attempted to update project that is not loaded: f:\Unity\StrategyGame\StrategyGameTest\Assembly-CSharp.csproj解决办法方法1先去 C:\Windows\Microsoft.NET\Framework 下,查看NET的版本在vscode中找到 Assembly-CSharp.csproj 文件,把改_attempted to update project that is not loaded: assembly-csharp.csproj

个人博客网页设计html—HTML+CSS+JavaScript制作响应式个人博客模板源码( JavaScript期末大作业 )_powered by wy all rights reserved-程序员宅基地

文章浏览阅读30次。校园篮球网页设计、足球体育运动、体育游泳运动、兵乓球 、网球、等网站的设计与制作。️ 大学生校园运动静态HTML网页设计作品,采用DIV CSS布局制作,内容包括:校园运动、运动技巧、运动规则、技术规则、经典动作。页面主体内容区域宽度为1200PX。网页整体使用CSS设置了网页背景图片。页面精美包含多个排版布局,学生网页作业水平制作。 一套优质的网页设计应该包含 (具体可根据个人要求而定)网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构..._powered by wy all rights reserved

HDU_1811 Rank of Tetris-程序员宅基地

文章浏览阅读75次。Rank of Tetris链接HDU_1811 Rank of TetrisDescription自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球。为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜,定时更新,名堂要比福布斯富豪榜还响。关于如何排名,这个不用说都知道是根据Rating从高到低来排,如果两个人具有相同的Rating,那就按这几个人的RP从高到低来排。终于,Lele要开始行动了,对N个人

Qt之数据表头增加控件_qtableview表头加控件-程序员宅基地

文章浏览阅读3.7k次,点赞4次,收藏30次。QTableView中不重写QHeadView,增加控件文章目录QTableView中不重写QHeadView,增加控件1、实现效果2、添加控件3、控件事件1、实现效果直接看实现的结果是否满足需求,再来干货!2、添加控件以本次演示为例进行代码讲解,其中各个变量由自己定义的去改变代码最终实现的效果需要自己去设计样式! //初始化表一的model m_model = new ..._qtableview表头加控件

推荐文章

热门文章

相关标签