在做Android系统的开发时,有时候会碰到一个这样的需求:

因为是自主品牌,也涉及到一个服务在推送,所以希望Launcher能固定会一下,第三方的可以安装 ,但是按Home键时,必须返回系统默认的Launcher

经过分析Home键的流程,发现可以很简单的办到,现和大家分享一下:

路径:frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java

<pre name="code" class="java">public void init(Context context, IWindowManager windowManager,            WindowManagerFuncs windowManagerFuncs) {....        mHomeIntent =  new Intent(Intent.ACTION_MAIN, null);        mHomeIntent.addCategory(Intent.CATEGORY_HOME);        mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);..}


 修改为:  

public void init(Context context, IWindowManager windowManager,            WindowManagerFuncs windowManagerFuncs) {....ComponentName mHomecom = new ComponentName("com.android.launcher3", "com.android.launcher3.Launcher");        mHomeIntent =  new Intent(Intent.ACTION_MAIN, null);        mHomeIntent.addCategory(Intent.CATEGORY_HOME);        mHomeIntent.setComponent(mHomecom);        mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);..}

也就是在此中增加一个setComponent的条件,ComponentName需要改成你所需要的就可以了。


经验证,完全可以搞定

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. Android系统显示原理简介
  3. 如果Android系统被收回
  4. android中的UriMatcher和ContentUris
  5. Android(安卓)进程保活
  6. Android(安卓)多Module,子module依赖aar文件,app module如何引用aa
  7. android adb 源码框架分析(1 系统)
  8. 讲一讲对Activity的了解【Android】
  9. 如何制作Ext4文件系统镜像

随机推荐

  1. Android应用程序框架
  2. android:text 文字阴影设置
  3. Xamarin C# Android for Windows 安装
  4. Ubuntu下编译android的linux内核
  5. Android的四大组件
  6. Android(安卓)的Bitmap的修改方法
  7. [Android]【安卓】开发小结
  8. 诡异特殊的EditText 弹出软键盘遮挡BUG
  9. 2011年,Android星光不再闪烁
  10. Android安全加密:非对称加密