不用category.HOME启动Launcher

本文探讨了后视镜项目中遇到的问题:第三方应用切换到HOME界面时导致自定义Launcher出现异常的情况。讨论了几种解决方案,包括直接启动并结束、设置透明界面、禁用Launcher自启动及定制Launcher启动策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后视镜项目出现了一个问题:第三方应用回到HOME界面,导致我的黑屏界面的出现。本来最合适的方式是把MirrorLauncher当成Launcher,把我这个应用直接启动服务就可以了。但是,MirrorLauncher作为Launcher会出现问题,所以我这个是作为Launcher的。

提出了几种方案:

1 不要我的黑屏界面。

  第一个想法就是直接启动之后finish掉。但此时,系统就没有找到可以启动的Launcher了,运行就会出现异常。

  第二种想法是不要finish掉,直接将黑屏设置为透明的,这样就可以了。但是这样改不属于好的修改方式。突然运行时发现这个导航按home键时,他是不会消失的,透明栏在它上面而已,所以它其实没有destroy掉。

2 整个系统不要Launcher自启动,不行,运行出异常

3 根据上次改的悬浮框隐藏显示情况,找到activity启动的具体流程。发现可以采用根据当前acticity点击下一个activity的包名进行过滤启动mirrorLauncher。但是这种方式治标不治本,下一个第三方应用一来,还是没能解决的。

4 由于第三方应用都是通过"android.intent.category.HOME"进行过滤,可以将MirrorLauncher添加这个属性,然后系统的Launcher启动属性用自定义的。

08-07 11:49:21.380 02293 02443 V WindowManagerShell: Transition requested (#687): android.os.BinderProxy@2aecde0 TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=0 taskId=5 displayId=0 isRunning=true baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.launcher/.Launcher mCallingUid=1000 } baseActivity=ComponentInfo{com.android.launcher/com.android.launcher.Launcher} topActivity=ComponentInfo{com.android.launcher/com.android.launcher.Launcher} origActivity=null realActivity=ComponentInfo{com.android.launcher/com.android.launcher.Launcher} numActivities=1 lastActiveTime=2217222 supportsSplitScreenMultiWindow=false supportsMultiWindow=true supportsPocketStudioMultiWindow=false isInFlexibleEmbedded = false uid = 10239 pid = 2638 resizeMode=2 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{android.window.IWindowContainerToken$Stub$Proxy@d27475e} topActivityType=2 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(110, 0 - 0, 0) topActivityInfo=ActivityInfo{f62e80c com.android.launcher.Launcher} launchCookies=[] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=false isVisible=false isVisibleRequested=false isSleeping=false locusId=LocusId[17_chars] displayAreaFeatureId=1 isTopActivityTransparent=false appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false topActivityInOplusCompatMode=false topActivityEligibleForLetterboxEducation= falseisLetterboxEducationEnabled= false isLetterboxDoubleTapEnabled= false topActivityEligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=2372 topActivityLetterboxHeight=1080 isUserFullscreenOverrideEnabled=false isSystemFullscreenOverrideEnabled=false cameraCompatTaskInfo=CameraCompatTaskInfo { c ... 这句话是什么意思
08-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值