0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android-設(shè)置APP開機自啟和隱藏導(dǎo)航欄/狀態(tài)欄方法

觸覺智能 ? 2024-07-29 18:14 ? 次閱讀

本文適用于觸覺智能所有支持Android11系統(tǒng)的開發(fā)板設(shè)置APP開機自啟和隱藏導(dǎo)航欄/狀態(tài)欄。觸覺智能的Purple Pi OH鴻蒙開源主板,是華為Laval官方社區(qū)主薦的一款鴻蒙開發(fā)主板。

wKgZomanareAN4ARAAN6bAkt-Xs526.png

wKgZomanar-ATl3gAAScXGBaR98595.png

該主板主要針對學(xué)生黨,極客,工程師,極大降低了開源鴻蒙開發(fā)者的入門門檻,具有以下幾點優(yōu)勢:

支持開源鴻蒙/Linux /Andriod 11/麒麟,兼容樹莓派 ;

四核A55,最高1.8G主頻,Mali G52-2EE GPU ;

支持OpenGL/CL/Vulkan/1T NPU/8M ISP ;

支持TensorFlow/MXNet/PyTorch/ Caffe ;

支持1*千兆以太網(wǎng)、3*USB2.0、1*USB3.0、3*UART、2*SPI、2*I2C、28*GPIO、1*MIPI DSI、1*HDMI ;

支持OpenHarmony3.2/4.0/4.1版本,開放SDK源代碼 ;

活躍的開發(fā)者社區(qū), 更多牛人在線技術(shù)支持 ;

超小尺寸,極致性價比,只需249元 ;


一、APP自啟


1.1 添加自啟服務(wù)

修改文件:

frameworks\base\core\java\com\android\internal\app\ResolverActivity.java

--- a/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java +++ b/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java @@ -101,6 +101,10 @@ import java.util.List; import java.util.Objects; import java.util.Set; +import java.util.concurrent.Executor; +import java.util.function.Consumer; +import android.os.SystemProperties; +import android.app.role.RoleManager; /** * This activity is displayed when the system attempts to start an Intent for @@ -341,6 +345,18 @@ public class ResolverActivity extends Activity implements protected void onCreate(Bundle savedInstanceState, Intent intent, CharSequence title, int defaultTitleRes, Intent[] initialIntents, List rList, boolean supportsAlwaysUseOption) { + + //by Lyle,220923 + String LauncherPkg = SystemProperties.get("persist.sys.def_launherpag"); + if(LauncherPkg!=null/* && !isDefaultLauncher(this,LauncherPkg)*/){ + Log.v("defaultLauncher","-----found default launcher pkg:"+LauncherPkg); + setDefaltLauncher(this,LauncherPkg); + startDefaultLauncher(this,LauncherPkg); + finish(); + return; + } + //end + setTheme(appliedThemeResId()); super.onCreate(savedInstanceState); @@ -433,6 +449,47 @@ public class ResolverActivity extends Activity implements intent.getAction() + ":" + intent.getType() + ":" + (categories != null ? Arrays.toString(categories.toArray()) : "")); } + + + public void setDefaltLauncher(Context context, String packageName) {//by Lyle,220923 + String roleName = "android.app.role.HOME"; + boolean add = true; + int flags = 0; + UserHandle user = android.os.Process.myUserHandle(); + + RoleManager roleManager = context.getSystemService(RoleManager.class); + Executor executor = context.getMainExecutor(); + Consumer< Boolean > callback = successful -> { + if (successful) { + Log.v("defaultLauncher","set Defalt Launcher successful" ); + } else { + Log.v("defaultLauncher","set Defalt Launcher failed "); + } + }; + roleManager.addRoleHolderAsUser(roleName, packageName, flags, user, executor, callback); + } + + public void startDefaultLauncher(Context context, String packageName) { + Intent intent = new Intent(); + PackageManager pm = context.getPackageManager(); + intent = pm.getLaunchIntentForPackage(packageName); + if (intent != null) + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + try { + context.startActivity(intent); + } catch (Exception e) { + Log.v("defaultLauncher","start Default Launcher failed,not find package:"+packageName ); + } + } + + public boolean isDefaultLauncher(Context context,String launcherPkg){ + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_HOME); + ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); + String currentHomePackage = resolveInfo.activityInfo.packageName; + Log.v("defaultLauncher","-currentHomePackage:"+currentHomePackage); + return launcherPkg.equals(currentHomePackage); + } private boolean isIntentPicker() { return getClass().equals(ResolverActivity.class);


1.2 添加APP

將需要自啟的APP放置
device/rockchip/rk356x/rk3566_r/preinstall_del/目錄下

(沒有preinstall_del目錄就手動創(chuàng)建一個即可),并添加以下文件:

Android.mk

xxx.apk(APP)

preinstall.mk

Android.mk文件內(nèi)容:

include $(call all-subdir-makefiles)
preinstall.mk文件內(nèi)容:

PRODUCT_PACKAGES += neu

注意:

neu為APP名字,例如neu.apk。

該目錄也是APK的預(yù)安裝目錄,如果有新的APK要預(yù)安裝,可把APK拷貝到preinstall_del/目錄下,并且把APK名字添加到preinstall.mk文件即可。

1.3 添加APP包名

修改文件:
device/rockchip/rk356x/rk3566_r/rk3566_r.mk
例如包名為:
com.mdptech.neuronappandroidhu

--- a/device/rockchip/rk356x/rk3566_r/rk3566_r.mk +++ b/device/rockchip/rk356x/rk3566_r/rk3566_r.mk @@ -46,4 +46,5 @@ PRODUCT_PROPERTY_OVERRIDES += persist.bt.power.down=true PRODUCT_PROPERTY_OVERRIDES += persist.sys.timezone=Asia/Shanghai PRODUCT_PROPERTY_OVERRIDES += ro.vendor.hdmirotationlock=true #PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=HDMI-A-1 PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI +PRODUCT_PROPERTY_OVERRIDES += persist.sys.def_launherpag=com.mdptech.neuronappandroidhu


包名命令行方式查看:pm list package -3,修改后 make 編譯源碼即可。

二、修改導(dǎo)航欄/狀態(tài)欄


2.1 導(dǎo)航欄

修改文件:

frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml

--- a/frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml +++ b/frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml @@ -22,6 +22,7 @@ xmlns:systemui="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" + android:visibility="gone" android:background="@drawable/system_bar_background"> + android:layout_height="match_parent" + android:visibility="gone"/>


2.2 狀態(tài)欄

修改文件:

frameworks/base/packages/SystemUI/res/layout/status_bar.xml

--- a/frameworks/base/packages/SystemUI/res/layout/status_bar.xml +++ b/frameworks/base/packages/SystemUI/res/layout/status_bar.xml @@ -26,6 +26,7 @@ android:id="@+id/status_bar" android:orientation="vertical" android:focusable="false" + android:visibility="gone" android:descendantFocusability="afterDescendants" android:accessibilityPaneTitle="@string/status_bar" >


修改后重新make編譯即可。

Purle Pi OH已過XTS兼容性認證

wKgaomana0GAWG3YAAHmBqy6zPY407.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式硬件
    +關(guān)注

    關(guān)注

    1

    文章

    913

    瀏覽量

    8179
  • 鴻蒙開發(fā)板
    +關(guān)注

    關(guān)注

    1

    文章

    21

    瀏覽量

    4461
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3607

    瀏覽量

    15956
  • RK3566
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    4719
收藏 人收藏

    評論

    相關(guān)推薦

    LABVIEW調(diào)用EXCEL時不在狀態(tài)欄顯示?

    如何讓labview在調(diào)用excel時不在狀態(tài)欄顯示圖標,不是最小化狀態(tài)欄,是完全不要出現(xiàn)。最小化顯示狀態(tài)期望狀態(tài)
    發(fā)表于 12-25 11:22

    如何解決ubuntu的桌面沒有ubuntu狀態(tài)欄的問題?

    燒錄OK3399的OK3399-desktop-release/Image/目錄下自帶的upgrade.img后,系統(tǒng)可以正常啟動,桌面上的圖標正常,但啟動后沒有看到狀態(tài)欄,不知道是這個image專門這樣設(shè)計將狀態(tài)欄隱藏掉了,還
    發(fā)表于 12-30 07:26

    請問系統(tǒng)下方的導(dǎo)航如何隱藏?

    如題,根據(jù)需求APP需要全屏顯示,但是現(xiàn)在導(dǎo)航常駐在下面。如何能隱藏導(dǎo)航,在下方邊緣上滑時才
    發(fā)表于 12-31 07:52

    ubuntu的桌面沒有ubuntu的狀態(tài)欄是為什么?

    [td]你好,燒錄OK3399的OK3399-desktop-release/Image/目錄下自帶的upgrade.img后,系統(tǒng)可以正常啟動,桌面上的圖標正常,但啟動后沒有看到狀態(tài)欄,不知道是這個image專門這樣設(shè)計將狀態(tài)欄隱藏
    發(fā)表于 01-13 09:35

    怎樣去隱藏Android 8.1定制系統(tǒng)的導(dǎo)航狀態(tài)欄顯呢

    怎樣去隱藏Android 8.1定制系統(tǒng)的導(dǎo)航狀態(tài)欄顯呢?
    發(fā)表于 02-15 06:51

    請問RK3288如何添加隱藏狀態(tài)欄和虛擬按鍵的選項?

    請問RK3288如何添加隱藏狀態(tài)欄和虛擬按鍵的選項?
    發(fā)表于 03-03 07:53

    RK3288如何隱藏底部狀態(tài)欄截屏按鈕?

    RK3288如何隱藏底部狀態(tài)欄截屏按鈕?
    發(fā)表于 03-03 07:30

    如何去實現(xiàn)RK3288 安卓7.1.2拒絕通知/狀態(tài)欄的功能呢

    如何去實現(xiàn)RK3288 安卓7.1.2拒絕通知/狀態(tài)欄的功能呢?
    發(fā)表于 03-03 06:25

    如何去隱藏RK3399 Android7.1的導(dǎo)航

    如何去隱藏RK3399 Android7.1的導(dǎo)航呢?有何方法?
    發(fā)表于 03-04 08:40

    怎樣在android系統(tǒng)設(shè)置中添加一個隱藏底部系統(tǒng)導(dǎo)航的功能呢

    怎樣在android系統(tǒng)設(shè)置中添加一個顯示選項呢?怎樣在android系統(tǒng)設(shè)置中添加一個隱藏底部系統(tǒng)導(dǎo)航
    發(fā)表于 03-10 07:53

    RK3399電池電量圖標在狀態(tài)欄的顯示和隱藏補丁

    想要把狀態(tài)欄上的電池圖標隱藏起來,把setImageDrawable(null); 注釋// else if (tileSpec.equals("battery"
    發(fā)表于 11-21 17:51

    創(chuàng)建與使用菜單、工具狀態(tài)欄

    大多數(shù)基于Windows的應(yīng)用程序均使用菜單、工具狀態(tài)欄。其中,用戶通過菜單及工具實現(xiàn)各種期望地操作;使用狀態(tài)欄獲得系統(tǒng)以及軟件的狀態(tài)
    發(fā)表于 08-23 11:19 ?22次下載

    Android 仿谷歌側(cè)邊導(dǎo)航源碼

    Android 仿谷歌側(cè)邊導(dǎo)航源碼
    發(fā)表于 03-19 11:23 ?1次下載

    這款越獄插件可以把iPhone狀態(tài)欄隱藏起來

    盡管狀態(tài)欄非常重要,但是它并不需要一直顯示在 iPhone 屏幕的頂部。
    發(fā)表于 03-09 15:15 ?2325次閱讀

    谷歌正在測試隱藏 PWA 應(yīng)用的狀態(tài)欄 或很快移除

    —— 在最新的體驗版本中,谷歌正在測試隱藏 PWA 應(yīng)用的狀態(tài)欄。當你將鼠標指針懸停在網(wǎng)頁鏈接上時,原本可在窗口底部狀態(tài)欄顯示的完整鏈接信息已不復(fù)存在。 長久以來,狀態(tài)欄是幫助用戶在
    的頭像 發(fā)表于 01-18 17:24 ?1895次閱讀