Android设置应用为默认桌面应用


需求:

要设置一应用为桌面应用,且重启开机时不弹出选择弹窗,直接默认非原系统应用。

实现方法:

实现方法一共两种:

  1. 读取当前有多少应用是桌面应用,在开机启动时,匹配所需应用为默认应用。
  2. 直接把所需应用设置为系统桌面应用。

前一种方法,可以实现系统内多个桌面应用切换,当不想用第三方应用时,可以从设置中切换回原生桌面应用。第二种方法就比较绝,相当于直接把第三方应用当作系统桌面应用,但是若该应用出BUG时,桌面就不能启动,因为桌面就是该应用。

第一种方法实现非常繁琐,第二种方法实现较为简单,所以本方法采用第二种方法。

具体实现步骤:

1、APK源码中设置应用为桌面应用

只需APK的AndroidMainfest.xml中修改如下即可:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

修改后即可实现如下效果:

按Home键或重启弹窗

但是,以上修改在每次开机时还会弹出此框,所以需要对Android源码加以修改。

2、Android源码中设置应用为系统预装应用

T:\Code\RK3399PRO_HDMI_ANDROID8\vendor\rockchip\common\apps文件夹下建立一文件夹,名称为EV_WebViewTest,在该文件夹下放入APK文件,重命名为EV_WebViewTest.apk,并建立一个Android.mk文件,文件内容如下:

# EV_WebViewTest
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := EV_WebViewTest
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE :=
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
#LOCAL_PREBUILT_JNI_LIBS :=
include $(BUILD_PREBUILT)

并在T:\Code\RK3399PRO_HDMI_ANDROID8\vendor\rockchip\common\apps\apps.mk的文件内添加以下代码:

PRODUCT_PACKAGES += \
    EV_WebViewTest

这样编译完固件烧录后,就会在系统内多了一个预装APK,其名称不一定是EV_WebViewTest,以APK项目设置为准。

3、Android源码中设置应用为系统桌面应用

本操作十分简单,只需在T:\Code\RK3399PRO_HDMI_ANDROID8\vendor\rockchip\common\apps\EV_WebViewTest\Android.mk中添加以下即可:

LOCAL_OVERRIDES_PACKAGES := Launcher3

解释一下:该语句的意思就是说,系统原生的Launcher3应用将不会被编进系统,被EV_WebViewTest这个应用给替换了。

LOCAL_OVERRIDES_PACKAGES这个语句通常用于替换系统原生内置应用。

仔细观察T:\Code\RK3399PRO_HDMI_ANDROID8\vendor\rockchip\common\apps该文件下许多应用,都用到了该语句,如什么TVLauner,就是干电视盒子的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM