使用自定义的Launcher.apk代替系统的

使用自定义的Launcher.apk替代系统的
1.首先使用adb shell命令启动

  会发现报一个unknow host service的错误,解决办法是:

  1)检查是否有其他程序占用了5037端口
  c:users>netstat -ano | findstr "5037"

  2)发现Listening的PID
使用自定义的Launcher.apk代替系统的

  3)然后在任务管理器里面找到对应的PID
使用自定义的Launcher.apk代替系统的

  4)清理掉占用5037的程序

2 使用su命令报:not found
使用自定义的Launcher.apk代替系统的

  原因是指向位置是$,表示没有root权限。
 
  解决办法:下载kingRoot对手机进行root
https://kingroot.net/zh-thank-you-for-downloading-android-root-for-windows/

  这样结果就可以使用su命令
使用自定义的Launcher.apk代替系统的

3  清理系统自带的Launcher2.apk和Launcher2Layout.apk

   获取所有权限
   chmod -R 777 app

   删除 Launcher2.apk和Launcher2Layout.apk即可

4   将删除的Launcher.apk重新push进来

   chmod 777 system 报错 Read-Only file System.

   调用mount -o remount rw /system 重新挂载即可

   具体流程如下:
  
   1)使用mount看挂载的/system是什么权限
使用自定义的Launcher.apk代替系统的

   2)使用命令重新挂载
使用自定义的Launcher.apk代替系统的

   3)重新检查
使用自定义的Launcher.apk代替系统的

   4)结果
使用自定义的Launcher.apk代替系统的

    然后 我用DDMS在File Explore里面就将Vision.apk删除。

5. 如何找到机器自带的Launcher.

   通过代码找到
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_HOME);

List<ResolveInfo> resultList = packageManager.queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : resultList) {
  LogUtils.debug("========================================");
  LogUtils.debug("name is :"+resolveInfo.activityInfo.name);
  LogUtils.debug("package is :"+resolveInfo.activityInfo.packageName);
  LogUtils.debug("========================================");
}


  然后就可以看到具体的Activity和category.HOME
04-23 08:58:31.914 26211-26211/com.gty.ryt.admin D/RYT_ADMIN: ========================================
04-23 08:58:31.916 26211-26211/com.gty.ryt.admin D/RYT_ADMIN: name is :com.hmct.vision.Launcher
04-23 08:58:31.916 26211-26211/com.gty.ryt.admin D/RYT_ADMIN: package is :com.hmct.vision
04-23 08:58:31.916 26211-26211/com.gty.ryt.admin D/RYT_ADMIN: ========================================


  得知这个launcher就是一个google play上面的美化桌面程序