美文网首页开发Android开发
Android开发替换Launcher步骤+替换桌面项目实战

Android开发替换Launcher步骤+替换桌面项目实战

作者: 谁动了我的代码 | 来源:发表于2022-11-14 16:59 被阅读0次

    替换系统Launcher流程

    做android产品的时候,根据需求会制定各种各样的Launcher,因此,在此记录替换系统Launcher的流程。

    1、修改frameworks/base/core/java/android/content/Intent.java中

        //public static finalString CATEGORY_HOME = "android.intent.category.HOME";改为
        public static final String CATEGORY_RB_HOME = "com.intent.category.RB_HOME";
    

    2、修改api下所有文件android.intent.category.HOME替换为

    android.intent.category.RB_HOME
    
    sed -i "s/CATEGORY_HOME/CATEGORY_RB_HOME/g" `grep CATEGORY_HOME -rl ./`
    sed -i "s/WIDGET_CATEGORY_RB_HOME_SCREEN/WIDGET_CATEGORY_HOME_SCREEN/g" `grep WIDGET_CATEGORY_RB_HOME_SCREEN -rl ./`
    

    3、修改所有文件中android.intent.category.HOME 替换为android.intent.category.RB_HOME

    sed -i "s/category.HOME/category.RB_HOME/g" `grep category.HOME -rl ./`
    

    4、添加APK文件

    a.在/package/app/路径下,添加Launcher文件夹,将launcher.apk文件copy到此。
    b.添加Android.mk文件
    c.将系统Launcher配置信息全部注销。
    

    项目实战

    Android 替换系统桌面Launcher

    公司做一个定制的APP,就是开机就打开app,按home还是自己app。我找了很多都是修改framework,这样很麻烦,就相当编源码了(我觉得是这样)。

    代码示例:

    <application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"    android:roundIcon="@mipmap/ic_launcher_round"    android:supportsRtl="true"    android:theme="@style/AppTheme"    android:sharedUserId="android.uid.system">    <activity android:name=".activity.MainActivity">        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.HOME" />            <category android:name="android.intent.category.LAUNCHER" />            <category android:name="android.intent.category.HOME.SEADEE"/>            <category android:name="android.intent.category.DEFAULT" />        </intent-filter>    </activity></application>我标记的地方 就是关键地方,
    

    开机的时候会这样显示,还有app一直点返回到退出程序会显示这个。 首先解决 点击返回显示这个东西,就是拦截返回按钮。 我这里在MainActivity中加入此方法

    [@Override](https://my.oschina.net/u/1162528)
      public void onBackPressed() {
    //     super.onBackPressed();
      }
    

    现在 基本就是完成了,还有一个主要的问题就是,每次要人选哪个是桌面很麻烦,所以思路就来了。Android本身的Launcher.apk 就是桌面,所以要么我们替换系统的Launcher.apk 要么就改源码,把跳转的链接 跳转到我们自己的apk,我这里实现的是前者。

    cmd中运行:

    adb push C:\Users\BAO\Desktop\HwLauncher6.apk /system/app 
    

    这样就OK了 但是出现一个问题,报错: adb remount 失败:remount failed: Operation not permitted 发现是权限的问题。 通过以下方式获取权限 方法:

    1:adb devices

    会出现就说明 你没有链接上,那么你就要看看是什么原因。我这里是360手机助手。
    就是这两个货,
    我很多时候AndroidStudio链接不上手机也是这个东西,把它结束进程,
    它可能不会立刻关闭,你要等几秒,方正就是一定要关闭它们。
    再次输入adb devices
    就说明你成功了。
    

    2:adb shell

    su
    mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
    chmod 777 /system
    cd system
    chmod 777 app  注意网上很多都是这样,这个地方写错了导致不成功 是chmod 不是chomd 
    cd app 
    ls(这一步可以操作可以不操作,主要看你系统的launcher叫什么名字,输入ls 就出现所有apk 找到你的launcher 我这里是HwLauncher6.apk)
     chmod 777 HwLauncher6.apk
     exit
    

    这样就获取操作/system/app/HwLauncher6.apk 记住是HwLauncher6.apk的读取修改操作 只有他的。 再次在cmd中运行

    adb push C:\Users\BAO\Desktop\HwLauncher6.apk /system/app 
    

    出现 ok 成功!


    以上就是Android开发替换Launcher步骤以及Android系统替换桌面项目实战;有关更多Android开发技术可以参考这本《Android核心技术电子册》学习,里面记录99%的Android核心技术点。详情可以点击查看。

    文末

    Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher出错的时候,安卓系统会出现“进程 com.android.launcher 意外停止”的提示窗口。这时需要重新启动Launcher。

    相关文章

      网友评论

        本文标题:Android开发替换Launcher步骤+替换桌面项目实战

        本文链接:https://www.haomeiwen.com/subject/agglxdtx.html