Android MTK 10.0 默认选择Launcher

需求:当自己系统中有多个应用。并且自己要默认选择一个Launcher(这里我出现了一个bug,一直没有解决掉,就是默认完launcher之后,在那个默认界面一直显示的是我自己默认的launcher界面)
如果没有预置GMS,只需按照步骤一修改,如果预置了GMS请按照步骤一、二修改

1、修改ActivityManagerService.java的updateActivityUsageStats方法

if (mContentCaptureService != null && (event == Event.ACTIVITY_PAUSED               || event == Event.ACTIVITY_RESUMED || event == Event.ACTIVITY_STOPPED               || event == Event.ACTIVITY_DESTROYED)) {           mContentCaptureService.notifyActivityEvent(userId, activity, event);       }       /*modified start for changed Launcher add by bnd mario start */       final PackageManager mPm = mContext.getPackageManager();       Intent homeIntent=new Intent();       homeIntent.addCategory(Intent.CATEGORY_HOME);       homeIntent.setAction(Intent.ACTION_MAIN);       homeIntent.addCategory(Intent.CATEGORY_DEFAULT);       ResolveInfo info = mPm.resolveActivity(homeIntent, PackageManager.MATCH_DEFAULT_ONLY);       //if("com.google.android.setupwizard".equals(info.activityInfo.packageName) || "android".equals(info.activityInfo.packageName)){ //if there is a default Launcher?       ComponentName DefaultLauncher=new ComponentName("com.flintrehab.launcher","com.flintrehab.launcher.MainActivity"); //here set the package name and class name of default launcher.       ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();       ComponentName currentDefaultHome = mPm.getHomeActivities(homeActivities);       ComponentName[]mHomeComponentSet = new ComponentName[homeActivities.size()];       for (int i = 0; i < homeActivities.size(); i++) {           final ResolveInfo candidate = homeActivities.get(i);           Log.d(TAG,"homeActivitie: candidate = "+candidate);           final ActivityInfo activityInfo= candidate.activityInfo;           ComponentName activityName = new ComponentName(activityInfo.packageName, activityInfo.name);           mHomeComponentSet[i] = activityName;       }       IntentFilter mHomeFilter = new IntentFilter(Intent.ACTION_MAIN);       mHomeFilter.addCategory(Intent.CATEGORY_HOME);       mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT);       List<ComponentName>Activities=new ArrayList();       mPm.replacePreferredActivity(mHomeFilter, IntentFilter.MATCH_CATEGORY_EMPTY,mHomeComponentSet, DefaultLauncher);//     }       /*modified end*/

2、找到PackageManagerService.java的SystemReady方法

` public void systemReady() {        enforceSystemOrRoot(“Only the system can claim the system is ready”);         //add by bnd_xnq start        if(isFirstBoot()) {            String examplePackageName = “com.flintrehab.launcher”;            //String exampleActivityName = “com.android.launcher3.Launcher”;            final int callingUserId = UserHandle.getCallingUserId();            PackageManager mypm = mContext.getPackageManager();            AppOpsManager mAppOpsManager = (AppOpsManager)
mContext.getSystemService(Context.APP_OPS_SERVICE);            try {                PackageInfo packinfo = mypm.getPackageInfo(examplePackageName, 0);                       
mAppOpsManager.setMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES,
packinfo.applicationInfo.uid, examplePackageName, AppOpsManager.MODE_ALLOWED);
//unknow source permmision                                         mAppOpsManager.setMode(AppOpsManager.OP_GET_USAGE_STATS,
packinfo.applicationInfo.uid, examplePackageName, AppOpsManager.MODE_ALLOWED);        
//usage access permiison            } catch (NameNotFoundException  e) {                e.printStackTrace();            }}

if(isFirstBoot()){       String pkg=“com.flintrehab.launcher”;       //android.util.Log.e(“xnq”,“xnq =” + xnq);       final NotificationManager mgr =
mContext.getSystemService(NotificationManager.class);          mgr.setNotificationPolicyAccessGranted(pkg, true);//Do not Disturb access
permision}

`

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 4 壁纸设置过程: 8 三 Launcher启动和初始化 9 1 Launcher进程启动过程 9 2 Launcher初始化――LauncherApplication 10 3 Launcher java初始化 12 1 Callbacks接口 15 2 数据加载流程 16 4 LoaderTask的run 方法 17 5 workspace加载数据 18 6 workspace绑定数据 20 7 ALL APP数据加载绑定 22 五 HotSeat分析 24 1 Hotseat配置文件 24 2 Hotseat构造函数 26 3 Hotseat加载数据 27 4 Hotseat绑定数据 27 5 Hotseat类 28 6 总结 30 六 页面滑动 PagedView 30 七 AllApp全部应用列表 AppsCustomizeTabHost 38 1 AllApp列表配置文件 38 2 AppsCustomizeTabHost分析 40 3 Tab变化时执行onTabChanged 41 八 AllApp界面拖拽元素 42 1 触摸拦截 43 2 handleTouchEvent方法 43 4 拖曳按钮 44 九 Launcher启动APP流程 45 1 WorkSpace触摸 45 2 CellLayout的onInterceptTouchEvent 方法 46 3 WorkSpace的onTouch 事件 47 4 BubbleTextView 48 5 onClick 方法 49 6 总结 50 1 常用类介绍 50 2 Launcher的数据库 51">一 Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 [更多]
Android 10.0中,Launcher3是一个默认的桌面启动器应用程序。默认情况下,Launcher3使用了多层桌面布局,由于每个应用程序的图标和小部件可以在不同的层级上进行放置,可以实现更多自定义和可玩性。 要将Launcher3修改为单层布局,可以进行以下步骤: 首先,要修改Launcher3的源代码。打开Launcher3的项目文件,在代码中找到与多层布局相关的部分。一般上,这些代码与屏幕上的图标和小部件的位置确定有关。 接下来,需要将多层布局改为单层布局。这意味着所有的图标和小部件将只能放置在一个层级上,不能另行分层。可以将所有图标和小部件视为一个整体,进行单层布局的更改。 在代码中找到与层级相关的代码,并进行相应的修改。可能涉及到图标和小部件的位置计算、绘制和触摸事件等。将多层布局的相关代码注释掉,或者删除,然后添加单层布局的代码。确保所有的图标和小部件都被正确地放置在单个层级上。 最后,重新编译和部署修改后的Launcher3应用程序。确保应用程序可以成功运行,并验证桌面布局是否变为单层。 通过以上步骤,就可以成功地将Android 10.0 Launcher3修改为单层布局。需要注意的是,这种修改可能涉及较多的代码更改,并且需要一定的编程经验和知识。如果对Android开发不熟悉,建议参考相关文档和指南,或咨询专业的开发人员进行帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值