开机直接进入该应用作为默认launcher(霸屏)或者开机自启指定应用

这篇具有很好参考价值的文章主要介绍了开机直接进入该应用作为默认launcher(霸屏)或者开机自启指定应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开机默认此app作为launcher首次加载 ,就是设置这个apk为开机向导,并没有设置这个成默认launcher,若此应用是launcher应用那么按返回之后会提示让你选择哪一laucher前提是此应用内置并没有作为launcher应用,就可以用下面的方法。

开机自启,开机自动启动某个指定应用!!!!

方法一:(推荐)但是这个比较慢,开机已经进入系统了但是还有过好一会才会收到广播,它需要完成系统更新之后才接受到

vendor/mediatek/proprietary/packages/apps/SystemUI/ src/com/android/systemui/SystemUIApplication.java

在接受到开机广播的地方,执行跳转,这里是广播接受跳转,可以直接显式启动

IntentFilter bootCompletedFilter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);

            bootCompletedFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);

            registerReceiver(new BroadcastReceiver() {

下面增加执行操作

一:可以直接显式启动

Intent cIntent=new Intent();

        cIntent.setClassName("lte.trunk.tapp","lte.trunk.tapp.settings.AASSettingActivity");

        cIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                        android.util.Log.d("yantao", "cIntent="+cIntent);

        context.startActivity(cIntent);

二:用PackageManager().getLaunchIntentForPackage方法,可以不用传类名,适合不晓得具体那个activity先出来,只需要有一个包名就可以

Intent cIntent=new Intent();

                cIntent = context.getPackageManager().getLaunchIntentForPackage("lte.trunk.tapp");

                android.util.Log.d("yantao", "cIntent="+cIntent);

                if(cIntent != null){

                cIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                    context.startActivity(cIntent);

                } else {

                    android.util.Log.d("yantao", "getLaunchIntentForPackage failed");

                }

O版本!o以上不起作用

frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

Home Activity 在上面的ActivityManagerService开启之后,会调用finishBooting()函数

在这个finishBooting中最后加入如下,这样可以开机指定应用直接进入这个应用,哪怕它是个launcher应用。就这一次首次加载,前面的判断可以不加

if (Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 1) {

+            Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);

+            Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);

+        }

+           Intent cIntent=new Intent();

+            cIntent = mContext.getPackageManager().getLaunchIntentForPackage("com.mcptt");

+            if(cIntent != null){

+                mContext.startActivity(cIntent);

+            } else {

+                android.util.Log.i("yantao", "getLaunchIntentForPackage failed" );+            }

+        //*/                     

上面就是设置这个apk为开机向导,ActivityManagerService中,由于开机向导只在系统第一次启动之前启动,所以开机向导关闭的时候需要将自己设置为不在启动。源码里finishBooting里面有句mAnrManager.writeEvent(AnrManager.EVENT_BOOT_COMPLETED);就是设置不再启动了。然后同时需要告诉系统开机向导已经完成了,需要写入如下属性到系统中(需要系统权限)

Settings.Global.putInt(getActivity().getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);

Settings.Secure.putInt(getActivity().getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);

然后在frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java里面修改别人写的按下电源键后锁死在launcher3了,判断如下,在case KeyEvent.KEYCODE_POWER: {这个case

else{

                        

-                        if(getCurrentActivityName(mContext).equals("com.android.launcher3.Launcher")) {

-                                if (down) {

-                                    interceptPowerKeyDown(event, interactive);

-                                } else {

-                                    interceptPowerKeyUp(event, interactive, canceled);

-                                }

-                        }else{

-                                if (down) {

-                                    Intent intent=new Intent();

-                                    intent.setClassName("com.android.launcher3","com.android.launcher3.Launcher");

-                                    mContext.startActivity(intent);

-                                }

-                        }

他这个意思是如果当前在launcher3,那么这个电源键正常使用,如果不在,那么就强制开启launcher3

我们只需要把这个回退到源码本来就可。就是电源键正常使用

if (down) {

                 interceptPowerKeyDown(event, interactive);

             } else {

                 interceptPowerKeyUp(event, interactive, canceled);

             }

             }

                break;

            }

上面是针对本身不是launcher的应用,如果本身就是launcher应用,那么就把它设置成默认launcher就可以

frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

在这个方法里startHomeActivityLocked,源码的最后加入

加入这个更改默认launcher的方法

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);

       ComponentName DefaultLauncher=new ComponentName("afrizona.maxalerts.rotas","afrizona.maxalerts.rotas.MainActivity");

       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);

完了别忘了把PhoneWindowManager里面别人强制电源键回launcher3的删了,如果有的话文章来源地址https://www.toymoban.com/news/detail-401022.html

到了这里,关于开机直接进入该应用作为默认launcher(霸屏)或者开机自启指定应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 9.0 当系统内置两个Launcher时默认设置Launcher3以外的那个Launcher为默认Launcher

    在9.0系统rom定制化开发中,由于产品开发需要要求系统内置两个Launcher,一个是Launcher3,一个是自己开发的Launcher,当系统启动Launcher时, 不要弹出Launcher选择列表 选择哪个Launcher要求默认选择自己开发的Launcher作为默认Launcher,关于选择Launcher列表 其实都是在ResolverActivity.java中处理

    2024年01月18日
    浏览(36)
  • Android 10.0 当系统内置两个Launcher时默认设置Launcher3以外的那个Launcher为默认Launcher

    在10.0定制化开发中,由于产品开发需要要求系统内置两个Launcher,一个是Launcher3,一个是自己开发的Launcher,当系统启动Launcher时, 不要弹出Launcher选择列表 选择哪个Launcher要求默认选择自己开发的Launcher作为默认Launcher,关于选择Launcher列表 其实都是在ResolverActivity.java中处理的具

    2024年02月10日
    浏览(33)
  • Android 10.0 设置默认launcher后安装另外launcher后默认Launcher失效的功能修复

     在10.0的系统rom定制化开发中,在系统中有多个launcher的时候,会在开机进入launcher的时候弹窗launcher列表,让用户选择进入哪个launcher,这样显得特别的不方便 所以产品开发中,要求用RoleManager的相关api来设置默认Launcher,但是在设置完默认Launcher以后,在安装一款Launcher的时

    2024年02月05日
    浏览(36)
  • Android10 设置默认Launcher

    不保留系统launcher 保留系统默认的Launcher 当系统存在多个launcher时,若没有设置默认launcher,开机启动后会弹出提示框,罗列所有launcher,用户选择并设置了默认launcher后,按home键以及以后重启都会进入默认的launcher。亦或者在设置--》应用和通知--》默认应用--》主屏幕应用 中

    2024年02月08日
    浏览(33)
  • OpenHarmony系统解决方案 - 配置屏幕方向导致开机动画和Launcher显示异常

    问题环境 系统版本:OpenHarmony-3.2-Release 问题现象 配置设备默认方向,例如修改为横屏显示,修改文件 display_manager_config.xml 的 buildInDefaultOrientation 参数值为 2 (Orientation::HORIZONTAL)。 源码中文件位于foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml。 系统中文件位

    2024年02月21日
    浏览(29)
  • GMS之Launcher中去除默认Search或替换为Chrome Search

    将FeatureFlags.java文件中的QSB_ON_FIRST_SCREEN变量修改为false 在源码中是通过launcher3中的BuildConfig.java去获取变量(默认true),那么在这里将变量修改为false即可(自行添加系统变量进行灵活控制也行) 最近在Android 13平台修改以上代码后,在Launcher中并不生效,后来发现,如果Sear

    2024年02月07日
    浏览(33)
  • Ubuntu开机无法进入桌面

    此文为记录Ubuntu重装系统之后,重启电脑,系统卡在Ubuntu图标显示之后,无法进入系统。 出现这种情况,多半是由于显卡的问题,要么是显卡驱动出了问题,要么是显卡和当前Lunix内核不兼容。 临时解决方案: 在连接启动U盘的情况下开机。 留意“GNU GRUB”启动加载程序屏幕

    2023年04月08日
    浏览(38)
  • Thinkpad电脑开机进入boot menu无法进入系统的解决方法

    ThinkPad T460 ,可以更换SSD固态硬盘。TONY Thinkpad电脑开机进入boot menu无法进入系统的解决方法 一、先从Bios设置开始,下面是我的配置过程(部分来源于网上)。 1、开机点击F1进入到bios界面。 2、进入Security—Secure Boot—Disabled。 如果不修改Secure boot选项为Disabled,在光驱引导时

    2024年02月11日
    浏览(43)
  • Linux 开机进入grub 命令行模式

    采用系统镜像,设置开机从镜像启动,如图进入启动界面 选择第三项进入Troubleshooting故障排除界面 ,进入第三项后,点击第二项,进入救援模式    然后进入如下模式,选择1,继续进行,接下来,我们就会进入到一个shell模式中,需要切换根目录,进行系统修复: 1、chroo

    2024年02月08日
    浏览(34)
  • Android 13.0 开机动画支持mp4格式视频作为开机动画播放

     在13.0的系统产品开发中,在系统开机动画这块一般情况下都是播放开机图片,然后绘制多张开机图片形成开机动画模式,而产品需求要求支持开机mp4格式的短视频来作为开机动画播放视频来介绍产品情况,就需要用开机视频来替代开机动画来实现功能 Android 开机画面 由三个

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包