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

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

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

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

觸覺(jué)智能 ? 2024-07-29 18:14 ? 次閱讀

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

wKgZomanareAN4ARAAN6bAkt-Xs526.png

wKgZomanar-ATl3gAAScXGBaR98595.png

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

支持開(kāi)源鴻蒙/Linux /Andriod 11/麒麟,兼容樹(shù)莓派 ;

四核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版本,開(kāi)放SDK源代碼 ;

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

超小尺寸,極致性?xún)r(jià)比,只需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/目錄下

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

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已過(guò)XTS兼容性認(rèn)證

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

    關(guān)注

    1

    文章

    912

    瀏覽量

    8117
  • 鴻蒙開(kāi)發(fā)板

    關(guān)注

    1

    文章

    21

    瀏覽量

    4457
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3546

    瀏覽量

    15734
  • RK3566
    +關(guān)注

    關(guān)注

    0

    文章

    135

    瀏覽量

    4568
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    請(qǐng)問(wèn)系統(tǒng)下方的導(dǎo)航如何隱藏

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

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

    [td]你好,燒錄OK3399的OK3399-desktop-release/Image/目錄下自帶的upgrade.img后,系統(tǒng)可以正常啟動(dòng),桌面上的圖標(biāo)正常,但啟動(dòng)后沒(méi)有看到狀態(tài)欄,不知道是這個(gè)image專(zhuān)門(mén)這樣設(shè)計(jì)將狀態(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

    請(qǐng)問(wèn)RK3288如何添加隱藏狀態(tài)欄和虛擬按鍵的選項(xiàng)?

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

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

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

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

    如何去實(shí)現(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è)置中添加一個(gè)隱藏底部系統(tǒng)導(dǎo)航的功能呢

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

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

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

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

    大多數(shù)基于Windows的應(yīng)用程序均使用菜單、工具狀態(tài)欄。其中,用戶通過(guò)菜單及工具實(shí)現(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)欄隱藏起來(lái)

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

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

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