MTK-Android12开机应用自启需求-自定义原生Launcher3 主界面布局图标

提示: MTK平台 Android12 版本 上实现 开机应用自启需求-自定义原生Launcher3 主界面布局图标

文章目录


前言

MTK平台 Android12 版本 上实现 开机应用自启需求-自定义原生Launcher3 主界面布局图标。

一、需求

MTK平台 Android12 版本 上实现 开机应用自启需求-自定义原生Launcher3 主界面布局图标

这里综合涉及到以下知识点,需要掌握的:

  • 定义属性
  • 内置应用
  • 开机自启定义的应用
  • 源Launcher3 主界面第一屏幕布局自定义

实现效果如下:

开机自启暂不演示,Launcher3 桌面图标效果如下:

二、参考资料

原生Launcher3 下实现开机自启:
原生Launcher3 MTKAndroid12-13-开机应用自启功能实现
Launcher3-实现家长管控-儿童模式-老人模式

针对非原生Launcher3 实现开机自启第三方应用介绍
Android系统实现开机自启第三方应用

系统数据库、系统属性的添加与使用:
Android 系统属性添加篇

修改Launcher3 原生桌面布局显示
MTKLauncher_布局页面分析

MTK平台下,内置应用指导:
MTK平台-内置应用作为系统Launcher
MTK内置第三方APP-卸载不可卸载-签名问题

三、修改文件

java 复制代码
\device\mediatek\system\common\device.mk
\vendor\mediatek\proprietary\packages\3rd-party\
\vendor\mediatek\proprietary\packages\apps\Launcher3\src\com\android\launcher3\Launcher.java
\vendor\mediatek\proprietary\packages\apps\Launcher3\res\xml\default_workspace_5x5.xml

四、实现方案

1、定义一个属性

路径文件:\device\mediatek\system\common\device.mk 添加一个属性定义即可,如下:

这里自定义一个属性目的是为了在加载Launcher3 启动时候从属性获取需要自启动应用的包名,可以扩展动态替换 自启动包名。

java 复制代码
  persist.fise.kaijiziqipkg=com.liulishuo.chronus

编译固件版本烧录后,自检查下是属性配置是否成功,如下:

2、内置应用App

路径:

java 复制代码
\vendor\mediatek\proprietary\packages\3rd-party\
\device\mediatek\system\common\device.mk

3rd-party 文件夹下创建自己的需要内置的文件夹,并放置需要内置的应用,如下:

编译文件.mk 文件如下:

java 复制代码
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := tp_zuoyebang
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
##LOCAL_PROPRIETARY_MODULE := true
LOCAL_ENFORCE_USES_LIBRARIES := false
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)

在配置文件 \device\mediatek\system\common\device.mk 配置需要编译的第三方app,内置到系统里面去:

3、开机自启定义的应用

这里有两种方案,要么在Launcher3 里面实现,要么在系统服务里面在开机时候启动第三方一次。这里强烈建议在Launcher3 中去实现,体验效果更好。

路径:\vendor\mediatek\proprietary\packages\apps\Launcher3\src\com\android\launcher3\Launcher.java

修改如下:

java 复制代码
     // 第一步:定义属性,
	// modify by fangchen start 
    private static final String FISE_KAIJI_ZIAI_APP = "persist.fise.kaijiziqipkg";
	// modify by fangchen end 


       
       // 第二步:在onCreate 方法中获取属性并启动应用
      // modify by fangchen start 
         Log.e(TAG, "onCreate   modify start ");
       
         String ziQiAppPkg = SystemProperties.get(FISE_KAIJI_ZIAI_APP,"com.liulishuo.chronus");

	    Log.e(TAG, "onCreate   ziQiAppPkg value:"+ziQiAppPkg);
        if(TextUtils.isEmpty(ziQiAppPkg)){
            Log.e(TAG, "onCreate   ziQiAppPkg no  value:");
		}else{
          Intent launchIntent = getPackageManager().getLaunchIntentForPackage(ziQiAppPkg);
        if (launchIntent != null) {
		    Log.e(TAG, "onCreate   zhunbei start app value:"+ziQiAppPkg);

            startActivity(launchIntent);
        } else {
            Log.d(TAG," app pkg:"+ziQiAppPkg+" zanwei anzhuang");
        }  
      }
        Log.e(TAG, "onCreate   modify end ");
        // modify by fangchen end  

4、更改主界面布局

路径:\vendor\mediatek\proprietary\packages\apps\Launcher3\res\xml\default_workspace_5x5.xml

这里面自定义布局需求,涉及到很多知识点、规则、语法结构,如果不明白的需要自行补充一下知识点和基础。

配置如下:

java 复制代码
<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
    <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
    <!-- Dialer, Messaging, [Maps/Music], Browser, Camera -->
      <resolve
        launcher:screen="0"
        launcher:x="1"
        launcher:y="4" >
	<favorite
        launcher:packageName="com.liulishuo.chronus"
        launcher:className="com.liulishuo.chronus.MainActivity" />
    </resolve>
        <resolve
        launcher:screen="0"
        launcher:x="2"
        launcher:y="4" >
	<favorite
        launcher:packageName="com.android.settings"
        launcher:className="com.android.settings.Settings" />
    </resolve>
</favorites>

总结

  • 这里简单来说就是一个定义第三方App 作为开机应用APP,这里面还是有部分知识点的,如需求所说:自定义属性、内置应用、开机自启、在哪里做开机自启业务、配置Launcher3 网格布局。
  • 涉及到知识点蛮多,如果串联起来。 这些都是常见的需求,需要掌握并熟练使用并配置。
  • 这里以MTK Android12 环境上操作实现,其它版本、平台实现需求思想一样的,按照思路思想实现即可。
  • 对于Launcher3 中,如何实现桌面配置布局,GMS、非GSMLauncher3 源码位置不一致的,这一点特别容易遗漏。
相关推荐
ItJavawfc10 天前
Android系统实现开机自启第三方应用
系统开机自启应用·自启第三方应用·第三方应用自启·开机自启应用
azoon.top1 年前
centos设置开机自启的几种方案(frp为例)
linux·运维·服务器·centos·frp·开机自启
洛克希德马丁2 年前
windows配置服务开机自启和保活
运维·服务器·windows·开机自启·服务·保活
Anakki2 年前
Frp设置开机自启,sh脚本自动化设置开机自启
java·服务器·自动化·开机自启·frpc
一掬净土2 年前
CentOS 7 Nacos 设置开机自动重启
linux·centos·nacos自动重启·开机自启·nacos开机自启