android之“java.lang.IllegalArgumentException: Window type can not be changed after the window is add”

Android悬浮窗开发全解析:从权限适配到性能优化实战 在Android应用开发中,窗口系统是构建用户界面的基础架构,WindowManager作为核心组件,负责管理屏幕上所有窗口的层级、位置与行为。其原理在于通过LayoutParams定义窗口属性,如类型、标志位和尺寸,实现视图的跨进程显示。这一机制的技术价值在于能够创建悬浮于其他应用之上的界面,为视频小窗、全局快捷工具等场景提供底层支持。然而,随着Android系统版本迭代,权限管理日趋严格,SYSTEM_ALERT_WINDOW权限的动态申请与各厂商ROM的兼容性适配成为开发难点。同时,在复杂交互场景下, 阅读详情

android之“java.lang.IllegalArgumentException: Window type can not be changed after the window is add”

异常详情:

  1. 08-11 10:33:16.720: E/AndroidRuntime(16778): FATAL EXCEPTION: main  
  2. 08-11 10:33:16.720: E/AndroidRuntime(16778): java.lang.IllegalArgumentException: Window type can not be changed after the window is added.  
  3. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.os.Parcel.readException(Parcel.java:1432)  
  4. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.os.Parcel.readException(Parcel.java:1382)  
  5. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:831)  
  6. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:4552)  
  7. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1661)  
  8. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1211)  
  9. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5039)  
  10. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)  
  11. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.Choreographer.doCallbacks(Choreographer.java:579)  
  12. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.Choreographer.doFrame(Choreographer.java:548)  
  13. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)  
  14. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.os.Handler.handleCallback(Handler.java:800)  
  15. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.os.Handler.dispatchMessage(Handler.java:100)  
  16. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.os.Looper.loop(Looper.java:194)  
  17. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at android.app.ActivityThread.main(ActivityThread.java:5433)  
  18. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at java.lang.reflect.Method.invokeNative(Native Method)  
  19. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at java.lang.reflect.Method.invoke(Method.java:525)  
  20. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:922)  
  21. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689)  
  22. 08-11 10:33:16.720: E/AndroidRuntime(16778):    at dalvik.system.NativeStart.main(Native Method)  

解决办法:

在Activity中有getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD)之类的代码;
在ICS 4.0 以后,无论是在onCreate()还是onAttachedToWindow()中都不能重设window的Type,想用此法屏蔽Home键无效!

关键属性解释:

ICS 4.0:

Android 系统4.0 命名为 Ice Cream Sandwich(简称ICS,冰淇淋三明治),是谷歌发布新一代操作系统。Android4.0 拥有十大重点新特性。集成谷歌电视和Chrome OS的智能停放 ,运行速度得到进一步提升。

如果需要添加,只需添加一个判断当Android系统大于4.0即可:

if(android.os.Build.VERSION.SDK_INT > 14)

{

//执行程序

this.getWindow().setType(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

}


Android 7.0+覆盖安装适配:FileProvider配置与版本兼容性实战 在Android开发中,应用间文件共享与系统权限管理是基础且关键的技术点。其核心原理在于Android系统通过沙盒机制隔离应用数据,保障安全性。随着Android版本迭代,Google逐步收紧权限策略,从Android 7.0引入的FileProvider机制,到Android 10的作用域存储,再到Android 11的细粒度权限控制,每一次升级都旨在提升用户隐私保护。这些变化的技术价值在于构建更安全的移动生态,但同时也给开发者带来了适配挑战,尤其是在应用内更新、文件分享等需要跨应用传递文件的场景。本文聚 阅读详情

相关推荐

Java反射机制:原理、应用与性能优化

反射机制是Java语言的核心特性之一,允许程序在运行时动态获取类信息并操作对象。其原理基于JVM的类加载机制和元数据存储,通过Class对象作为入口点访问构造方法、字段和方法。这项技术为框架开发提供了极大灵活性,广泛应用于Spring依赖注入、Hibernate ORM映射等场景。针对反射的性能瓶颈,可采用MethodHandle或字节码增强技术优化,同时需要注意安全管理器限制和模块化系统的访问控制。合理使用反射能够实现动态代理、注解处理等高级功能,但需平衡灵活性与代码可维护性。

深未来技术 323

java.lang.IllegalArgumentException: Window type can not be changed after the window is added.

弹窗报错,没有报具体代码信息 UncaughtException detected: java.lang.IllegalArgumentException: Window type can not be changed after the window is added. at android.os.Parcel.readException(Parcel.java:1550) at android.os.Parcel.readException(Parcel.java:149

jinrumorijuesha的博客 2288

【半桥LLC】半桥LLC谐振开环闭环软启动DCDC变换器的设计与仿真

本文详细分析了半桥LLC谐振DC-DC变换器的开环与闭环控制设计原理,重点探讨了软启动功能的实现。通过仿真验证,展示了开环与闭环情况下的电压输出差异以及系统效率的提升。该研究为提高DC-DC变换器性能提供了参考。

2401_84610415的博客 2595

Android 4.4报错,Android 7.0运行正常 Window type can not be changed after the window is added

异常如下: java.lang.IllegalArgumentException: Window type can not be changed after the window is added. at android.os.Parcel.readException(Parcel.java:...

景兄弟的博客 5196

2025.06.20【pacbio】|PB甲基化分析结果的统计与可视化介绍

本文介绍了PacBio甲基化数据的统计分析与可视化方法。主要内容包括:1) 分析甲基化位点分布、比例及染色体分布;2) 修饰基序(Motif)的统计与热图展示;3) 全基因组和局部区域测序深度可视化;4) 使用IGV查看单个reads修饰情况。文章提供了R代码示例,涵盖柱状图、分布图、热图等多种可视化形式,并建议了差异甲基化分析等进阶方法,帮助科研人员深入挖掘甲基化数据。

2066

香橙派5使用RK3588S内置NPU加速yolov5推理,实时识别数字达到50fps

香橙派5采用了RK3588S,内置的NPU达到了6Tops的算力,博主这里记录一下自己的踩坑过程,好不容易做出来的不能以后忘记了(手动狗头)。这里博主还在B站上发布了效果视频,大家感兴趣的话可以看一下。其中解决了先验框标注位置不对,或者出现非常多的框的问题

weixin_51651698的博客 2万+

java窗口不能改变,Android Crash,java.lang.IllegalArgumentException:添加窗口后无法更改窗口类型...

我向市场上传了一个Android应用程序,并且由于某种原因,用户收到此错误.java.lang.IllegalArgumentException: Window type can not be changed after the window is added.at android.os.Parcel.readException(Parcel.java:1331)at android.os.Par...

weixin_34871076的博客 738

ALTERA Triple-Speed Ethernet IP核在UDP通信中的实战配置指南

本文详细介绍了在Intel FPGA(原ALTERA)平台上配置Triple-Speed Ethernet IP核以实现UDP通信的实战指南。内容涵盖从IP核选型、QSYS系统搭建、关键参数配置,到UDP数据包组装、NIOS C程序调试及上板验证的全流程,重点解析了如何利用该IP核快速构建稳定的千兆网通信基础,为FPGA网络应用开发提供清晰路径。

m3n5b7v8c9x的博客 513

java.lang.IllegalArgumentException: Window type can not be changed after the

java.lang.IllegalArgumentException: Window type can not be changed after the 博客分类:  android android备忘录   java.lang.IllegalArgumentException: Window type can not be changed after the windo

chenqian_deyouxiang的专栏 7623

零基础用AHK操作Excel:从数据读取到自动填写(附完整脚本解析)

本文为零基础用户详细介绍了如何使用AutoHotkey(AHK)通过COM接口高效操作Excel,实现从数据自动读取到填写的完整自动化流程。文章包含完整的脚本解析、环境搭建指南、核心代码逐行讲解以及实际应用案例,帮助办公人员大幅提升数据处理效率,告别重复劳动。

weixin_29202213的博客 554

香橙派OPi 6系列选型指南:RK3588与RK3588S开发板深度对比

开发板选型是嵌入式系统设计的关键环节,尤其在边缘计算和AI推理等场景中,芯片的差异直接影响硬件架构。瑞芯微RK3588及其精简版RK3588S是当前高端开发板的核心方案,两者在PCIe通道、显示输出和SATA支持上存在显著区别。理解这些原理,有助于工程师根据项目需求快速匹配产品。香橙派OPi 6系列基于这两款芯片,衍生出OPi 6、OPi 6 Pro与OPi 6 Max三种形态:紧凑型适合嵌入式门禁与AI盒子,Pro版凭借双屏异显和PCIe 3.0满足收银机与视频分析,Max的双2.5G网口和大内存则面向轻

weixin_29185167的博客 227

安卓java.lang.IllegalArgumentException: The observer is null.解决方案

刚刚在调试自己的APP项目的时候报错java.lang.IllegalArgumentException: The observer is null.,而之前是可以运行通过,所以百思不得其解,后来在网上查找相关资料,终于弄明白是咋回事,现在记录如下,一来算是积累调错方面的知识,二来或许可以帮到出现同样错误的人。 出错的主要原因是在ViewPager中使用到了GridView这样的控件,当...

weixin_34310127的博客 88

【嵌入式底层知识修炼】按键和LED共用IO口的分时复用扫描方法

文章目录01 - PCB原理图例程02 - 分时复用的注意项和设计2.1 - 注意项2.2 - 设计03 - 代码实现 只要我跑的速度够快,寂寞就追不上我 只要Key和Led切换速度够快,人眼就看不出来 ————小白   如果你存在按键Key和显示Led共用同一个IO时,需要分时复用的需求,则可以移植代码进行使用: 代码所占code少于0.5K 线程安全,中断安全 可移植性高,配置容易 注意:系统需要存在一个至少为1ms的时钟中断 01 - PCB原理图例程   举2个Key和Led共用IO口的

单眼皮根号三的博客 1万+

window type

About Windows https://msdn.microsoft.com/en-us/library/windows/desktop/ms632597(v=vs.85).aspx About Window Classes https://msdn.microsoft.com/en-us/library/windows/desktop/ms633574(v=vs.85).aspx

哈哈的博客 423

【WRFDA教程】客观分析(OBSGRID)详解

客观分析(OBSGRID)详解

WW、forever的博客 1133

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java.lang.IllegalStateException: Hardware acceleration can only be used with a single UI thread.

今天在研究一个东西的时候有的真机上报这个错误 (我发现的是自己的coopal的4.4手机上), 这种情况是由于硬件加速的原因引起的 but 我在manifest中已经关闭了硬件加速,代码如下 <application android:allowBackup="true" android:hardwareAccelerated="false" an

彭思正的博客 2057

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

安卓开发 从零到一 开发一个APP

实现后效果展示分析使用 底部导航栏(BottomNavigationView) + Fragment 实现四个页面切换</</报错ERROR: F:\AndroidStudioProjects\FitnessGuide\fitness-guide\android\app\src\main\res\menu\bottom_nav_menu.xml:6: AAPT: error: resource android:drawable/ic_menu_home is private.

qq_53674101的博客 278

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 4.0.x Home键事件拦截/监听

在2.3.x 的主要做法如下,具体实现网上有很多文章 @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } 代码移植到4.0.1后 this.getWindow

goleftgoright的专栏 1万+

安卓启动流程与期间核心组件工作原理

本文以实际工作中出现的启动相关各种千奇百怪的bug为钩子,讲解了安卓app冷启动过程中核心组件的工作原理,pms -> packageParser/androidmanifest.xml -> context -> ams -> application -> activity -> layoutInflater资源加载过程 -> wms /window/WM -> view与viewgroup绘制原理 -> 渲染阶段。理供解决问题的思路,看业务框架代码能看懂他们改的哪块源码,跟他们扯皮能扯赢

mix39的博客 337

DialogFragment 生命周期治理与安全弹窗实践指南

DialogFragment 是 Android 中基于 Fragment 生命周期管理对话框的核心机制,其本质并非 UI 组件,而是将 Dialog 纳入 FragmentManager 统一调度的生命周期契约。它通过 Fragment 的 attach→create→view→resume 完整链路,解决横竖屏重建、返回键响应、状态丢失等传统 Dialog 的顽疾。技术价值在于实现 UI 与生命周期解耦、支持 ViewModel 协同、兼容 Navigation 组件,并规避内存泄漏与 Transact

weixin_36250534的博客 371

Android 随笔集 By tuliyuan

1.反射机制调用系统服务EthernetManager private void getNetInfo(Context context) { try { // Log.d(TAG, "dddd getNetInfo is " ); Method getServiceMethod = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", new Cla

qq_18906227的博客 2281

【Android】各式各样的弹出框与对菜单键、返回键的监听

【Android】各式各样的弹出框与对菜单键、返回键的监听 Android自带各式各样的弹出框。弹出框也是安卓主要的组件之中的一个。同一时候安卓程序能够对菜单键、返回键的监听。但在安卓4.0之后就禁止对Home键的屏蔽与监听,强制保留为系统守护按键。假设非要对Home键的屏蔽与监听。就会出现java.lang.IllegalArgume...

weixin_30821731的博客 102
上一篇: android studio 虚拟机adb.exe已停止工作的处理
下一篇: Android - Gradle "xxx" project refresh failed
forwardToChase
博客等级 码龄11年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值