0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Android-设置APP开机自启和隐藏导航栏/状态栏方法

触觉智能 2024-07-29 18:14 次阅读

本文适用于触觉智能所有支持Android11系统的开发板设置APP开机自启和隐藏导航栏/状态栏。触觉智能的Purple Pi OH鸿蒙开源主板,是华为Laval官方社区主荐的一款鸿蒙开发主板。

wKgZomanareAN4ARAAN6bAkt-Xs526.png

wKgZomanar-ATl3gAAScXGBaR98595.png

该主板主要针对学生党,极客,工程师,极大降低了开源鸿蒙开发者的入门门槛,具有以下几点优势:

支持开源鸿蒙/Linux /Andriod 11/麒麟,兼容树莓派 ;

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

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

支持TensorFlow/MXNet/PyTorch/ Caffe ;

支持1*千兆以太网、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源代码 ;

活跃的开发者社区, 更多牛人在线技术支持 ;

超小尺寸,极致性价比,只需249元 ;


一、APP自启


1.1 添加自启服务

修改文件:

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目录就手动创建一个即可),并添加以下文件:

Android.mk

xxx.apk(APP)

preinstall.mk

Android.mk文件内容:

include $(call all-subdir-makefiles)
preinstall.mk文件内容:

PRODUCT_PACKAGES += neu

注意:

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

该目录也是APK的预安装目录,如果有新的APK要预安装,可把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 编译源码即可。

二、修改导航栏/状态栏


2.1 导航栏

修改文件:

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 状态栏

修改文件:

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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式硬件
    +关注

    关注

    1

    文章

    927

    浏览量

    8204
  • 鸿蒙开发板
    +关注

    关注

    1

    文章

    21

    浏览量

    4467
  • OpenHarmony
    +关注

    关注

    25

    文章

    3657

    浏览量

    16128
  • RK3566
    +关注

    关注

    0

    文章

    144

    浏览量

    4778
收藏 人收藏

    评论

    相关推荐

    LABVIEW调用EXCEL时不在状态栏显示?

    如何让labview在调用excel时不在状态栏显示图标,不是最小化状态栏,是完全不要出现。最小化显示状态期望状态
    发表于 12-25 11:22

    如何解决ubuntu的桌面没有ubuntu状态栏的问题?

    烧录OK3399的OK3399-desktop-release/Image/目录下自带的upgrade.img后,系统可以正常启动,桌面上的图标正常,但启动后没有看到状态栏,不知道是这个image专门这样设计将状态栏隐藏掉了,还
    发表于 12-30 07:26

    请问系统下方的导航如何隐藏

    如题,根据需求APP需要全屏显示,但是现在导航常驻在下面。如何能隐藏导航,在下方边缘上滑时才
    发表于 12-31 07:52

    ubuntu的桌面没有ubuntu的状态栏是为什么?

    [td]你好,烧录OK3399的OK3399-desktop-release/Image/目录下自带的upgrade.img后,系统可以正常启动,桌面上的图标正常,但启动后没有看到状态栏,不知道是这个image专门这样设计将状态栏隐藏
    发表于 01-13 09:35

    怎样去隐藏Android 8.1定制系统的导航状态栏显呢

    怎样去隐藏Android 8.1定制系统的导航状态栏显呢?
    发表于 02-15 06:51

    请问RK3288如何添加隐藏状态栏和虚拟按键的选项?

    请问RK3288如何添加隐藏状态栏和虚拟按键的选项?
    发表于 03-03 07:53

    RK3288如何隐藏底部状态栏截屏按钮?

    RK3288如何隐藏底部状态栏截屏按钮?
    发表于 03-03 07:30

    如何去隐藏RK3399 Android7.1的导航

    如何去隐藏RK3399 Android7.1的导航呢?有何方法
    发表于 03-04 08:40

    怎样在android系统设置中添加一个隐藏底部系统导航的功能呢

    怎样在android系统设置中添加一个显示选项呢?怎样在android系统设置中添加一个隐藏底部系统导航
    发表于 03-10 07:53

    RK3399电池电量图标在状态栏的显示和隐藏补丁

    想要把状态栏上的电池图标隐藏起来,把setImageDrawable(null); 注释// else if (tileSpec.equals("battery"
    发表于 11-21 17:51

    创建与使用菜单、工具状态栏

    大多数基于Windows的应用程序均使用菜单、工具状态栏。其中,用户通过菜单及工具实现各种期望地操作;使用状态栏获得系统以及软件的状态
    发表于 08-23 11:19 22次下载

    Android 仿谷歌侧边导航源码

    Android 仿谷歌侧边导航源码
    发表于 03-19 11:23 1次下载

    这款越狱插件可以把iPhone状态栏隐藏起来

    尽管状态栏非常重要,但是它并不需要一直显示在 iPhone 屏幕的顶部。
    发表于 03-09 15:15 2366次阅读

    谷歌正在测试隐藏 PWA 应用的状态栏 或很快移除

    —— 在最新的体验版本中,谷歌正在测试隐藏 PWA 应用的状态栏。当你将鼠标指针悬停在网页链接上时,原本可在窗口底部状态栏显示的完整链接信息已不复存在。 长久以来,状态栏是帮助用户在
    的头像 发表于 01-18 17:24 1923次阅读

    瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航/状态栏?看这篇文章就懂了

    本文介绍瑞芯微RK3566/RK3568在Android11系统默认屏蔽导航/状态栏方法,触觉智能的Purple Pi OH鸿蒙开发板演示
    的头像 发表于 10-30 18:26 335次阅读
    瑞芯微RK3566/RK3568 <b class='flag-5'>Android</b>11下该如何默认屏蔽<b class='flag-5'>导航</b><b class='flag-5'>栏</b>/<b class='flag-5'>状态栏</b>?看这篇文章就懂了