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