打开google search,从taskbar拖拽全屏应用比如Google进入分屏,页面出现Launcher报错
相关log:
08-17 18:34:33.907 11673 11673 E AndroidRuntime: FATAL EXCEPTION: main
08-17 18:34:33.907 11673 11673 E AndroidRuntime: Process: com.android.launcher, PID: 11673
08-17 18:34:33.907 11673 11673 E AndroidRuntime: java.lang.SecurityException: Attempt to launch activity without category Intent.CATEGORY_LAUNCHER ComponentInfo{com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.MainInfoGatewayInternal}
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.os.Parcel.createExceptionOrNull(Parcel.java:2455)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:2439)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:2422)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:2364)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.content.pm.ILauncherApps$Stub$Proxy.getActivityLaunchIntent(ILauncherApps.java:1285)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.content.pm.LauncherApps.getMainActivityLaunchIntent(LauncherApps.java:761)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.systemui.shared.system.LauncherAppsCompat.getMainActivityLaunchIntent(LauncherAppsCompat.java:32)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.taskbar.TaskbarDragController.startSystemDrag(TaskbarDragController.java:302)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.taskbar.TaskbarDragController.callOnDragStart(TaskbarDragController.java:254)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.dragndrop.DragController.handleMoveEvent(DragController.java:895)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.dragndrop.DragController.onDriverDragMove(DragController.java:458)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.dragndrop.DragDriver$InternalDragDriver.onTouchEvent(DragDriver.java:182)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.dragndrop.DragController.onControllerTouchEvent(DragController.java:573)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.views.BaseDragLayer.onTouchEvent(BaseDragLayer.java:283)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.view.View.dispatchTouchEvent(View.java:14633)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3167)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2809)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.views.BaseDragLayer.dispatchTouchEvent(BaseDragLayer.java:318)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.taskbar.TaskbarDragLayer.dispatchTouchEvent(TaskbarDragLayer.java:251)
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at
1、通过log来看报错信息应该是在启动 com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.MainInfoGatewayInternal 时候缺少category Intent.CATEGORY_LAUNCHER
通过对Google Search进行反编译查看AndroidManifest进行查看
<activity-alias android:excludeFromRecents="true" android:exported="true" android:label="@string/search_activity_name" android:name="com.google.android.googlequicksearchbox.MainInfoGatewayInternal" android:noHistory="true" android:process=":search" android:targetActivity="com.google.android.googlequicksearchbox.SearchActivity" android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay" android:visibleToInstantApps="true">
<meta-data android:name="alias_name" android:value="MainInfoGatewayInternal"/>
<meta-data android:name="instantapps.clients.allowed" android:value="true"/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.INFO"/>
</intent-filter>
</activity-alias>
在启动com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.MainInfoGatewayInternal 时候缺少category Intent.CATEGORY_LAUNCHER
2.通过抓取START u0 log发现在界面点击以及hotseat点击google应用时均启动的是SearchActivity。
adb logcat -b all | grep “START u0”
界面点击或者hotseat点击:
08-23 23:36:56.290 919 6748 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/.SearchActivity bnds=[60,425][373,650]} from uid 10059
只有在crash问题发生点:recent最近应用,这里启动的Activity是com.google.android.googlequicksearchbox.MainInfoGatewayInternal。由于这里Google应用没有配置 Intent.CATEGORY_LAUNCHER,导致在启动这个Activity的时候找不到因此报错。
3.由于时Google应用我们无法直接进行修改。通过查看代码调用栈,启动应用的位置在launcher里面:
08-17 18:34:33.907 11673 11673 E AndroidRuntime: at com.android.launcher3.taskbar.TaskbarDragController.startSystemDrag(TaskbarDragController.java:302)
我们在这里直接硬编码进行规避,由于正常都是走的com.google.android.googlequicksearchbox/.SearchActivity,只有这种情况走com.google.android.googlequicksearchbox.MainInfoGatewayInternal。我们先让他走进MainInfoGatewayInternal然后在重新设置启动的应用包名和类名为SearchActivity。即可规避crash
startSystemDrag()
if(item!=null && item.getTargetComponent()!=null && item.getTargetComponent().getPackageName()!=null && item.getTargetComponent().getPackageName().equals("com.google.android.googlequicksearchbox")&& item.getTargetComponent().getClassName().equals("com.google.android.googlequicksearchbox.MainInfoGatewayInternal")){ComponentName cn = new ComponentName(item.getTargetComponent().getPackageName(), "com.google.android.googlequicksearchbox.SearchActivity");item.getIntent().setComponent(cn);
}
打开google search,从taskbar拖拽全屏应用比如Google进入分屏,页面出现Launcher报错相关推荐
- 播放器SkeyeWebPlayer多分屏(九宫格)、拖动(拖入分屏播放)、双击分屏放大缩小等功能的使用
免费视频直播.点播H5播放器SkeyeWebPlayer多屏(九宫格).双击分屏放大缩小.拖动(拖入分屏播放)等功能的使用. 1.SkeyeWebPlayer多屏(九宫格)布局切换,一般采用1.4.9 ...
- linux打开xshell传文件,Xshell拖拽文件直接上传至Linux
原创作品转载请注明出处 在自己windows中和虚拟机里的linux进行文件传输有很多种方式,之前使用的是FileZilla,一个免费的FTP软件.但是这是一个独立软件,使用起来稍微麻烦一些.可不可以 ...
- 拖拽松开飞走触发按钮(飞屏按钮)
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using U ...
- 微信小程序-iphone打开页面空白,报错Miniprogramerror Syntaxerror...
使用uniapp开发微信小程序,使用安卓手机打开小程序没问题,使用开发工具的真机调试,iphone打开小程序就出现页面空白,并且控制台报错: Miniprogramerror Syntaxerror ...
- ipad可以分屏吗_oppo手机的分屏功能你使用过吗?可以同时打开两款软件互不影响!...
今天给大家分享OPPO手机的几个小技巧 我们平常使用OPPO手机的时候想要去清理后台应用 主要是因为手机出现卡顿 我们可能后台开启的应用程序太多导致的 那么我们一清理的话 会把所有的应用程序都清理掉 ...
- 【无标题】react umi项目在谷歌,火狐,360极速模式打开正常,360兼容模式打开页面空白,报错SCRIPT1002:‘语法错误’,SCRIPT1003: 缺少 ‘:‘
react umi项目在谷歌,火狐,360浏览器极速模式打开正常,360浏览器兼容模式报错SCRIPT1002:'语法错误',SCRIPT1003: 缺少 ':' 试了很多种办法: 适配babel-c ...
- Vue 打包后打开为空白页面 并且控制台报错‘Failed to load resource: net::ERR_FILE_NOT_FOUND’
当我们开发完成后进行 npm run build打包后形成dist文件 我们通过访问dist文件中的index,会出现空白页面什么都不显示的问题,控制台中还会报'Failed to load reso ...
- vue打包后打开index.html文件空白页面并且控制台报错Failed to load resource: net::ERR_FILE_NOT_FOUND
解决方法在项目根目录新建vue.config.js文件并且复制下列代码到文件中 module.exports = {publicPath:'./', // 执行 npm run build 统一配置路 ...
- Win7/windows8/win 10系统下Photoshop不能直接拖拽打开图片的解决办法
我们知道Adobe Photoshop打开图片的方式有很多种,其中有一种是我们经常用到的,那就是直接从资源管理器或者其他地方中直接把图片通过拖拽的方式拖到PS窗口中打开,在Win10系统中,使用PS的 ...
最新文章
- swift和OC - 拆分数组 和 拆分字符串
- 数据可视化 | Matplotlib
- 样本不均衡SMOTE算法代码实列
- reverse()反转字符串的正确使用方式
- Net设计模式实例之单例模式( Singleton Pattern)
- Android端实时音视频开发指南
- redis:集群配置
- 学软件测试必看的10本书推荐给你
- Mac修改hosts方法
- 【AutoLeaders】一些好用的网站
- 基于决策树模型的金融保险用户分类综合项目【数据可视化相关性分析填充缺失值转码建模商业应用】
- 录屏状态监听之防录屏 - iOS
- 邮件解析引擎FastMail库大功告成!
- 记录自己三天速成django+html制作国内疫情可视化平台的过程(二)
- NBA篮球经典动画gif系列连载之三
- 一个BAT大厂面试者整理的Android面试题目!
- 【Mac应用程序】强力卸载Mac应用程序
- Zemax自学---1(基础知识)
- 梅敬成 三维CAD软件发展历程:过去,现在和未来 (ACIS,Parasolid,OCC, 中望OV,华天CRUX IV )
- 如何寻找论文的创新点