解决Android7.0 com.Android.internal.policy.DecorContext cast to activity(by 星空武哥)
2016-11-21 22:29
1211 查看
转载请标注原文地址:http://blog.csdn.net/lsyz0021/article/details/53266021
最近我们的项目在Android7.0出现了的bug,由于Android7.0系统刚发布没多久,使用Android7.0的手机目前也就是华为的mate9,我们的问题也就是反应在mate9上面。我们项目中用到了view.getContext()方法获取context或者activity,在之前的系统上都是没有问题的,而在Android7.0系统就报错,后来才知道应该是7.0的系统对其进行了限制。那么我们怎么才能解决呢?
异常信息提示:
也就是不能利用view获取activity,那么我们可以使用暴力反射获取。代码如下:
这样就可以了
[b]拿出微信 扫码关注下面的微信订阅号,及时获取更多推送文章
[/b]
关注后按照下面回复获取福利
1、回复“view大全”获取view的高清全部子类图
2、回复“ViewGroup”获取ViewGroup的高清[b]全部子类图
3、回复“TextView”获取TextView的高清全部子类图
4、回复“FrameLayout”获取FrameLayout的高清全部子类图
5、回复“LinearLayout”获取LinearLayout的高清全部子类图
6、回复“ImageView”获取ImageView的高清全部子类图[/b]
7、回复“小车”获取观看无线智能遥控小车
最近我们的项目在Android7.0出现了的bug,由于Android7.0系统刚发布没多久,使用Android7.0的手机目前也就是华为的mate9,我们的问题也就是反应在mate9上面。我们项目中用到了view.getContext()方法获取context或者activity,在之前的系统上都是没有问题的,而在Android7.0系统就报错,后来才知道应该是7.0的系统对其进行了限制。那么我们怎么才能解决呢?
异常信息提示:
com.Android.internal.policy.DecorContext cast to activity……
也就是不能利用view获取activity,那么我们可以使用暴力反射获取。代码如下:
/** * 通过view暴力获取getContext()(Android不支持view.getContext()了) * * @param view 要获取context的view * @return 返回一个activity */ public static Activity getActivity(View view) { Activity activity = null; if (view.getContext().getClass().getName().contains("com.android.internal.policy.DecorContext")) { try { Field field = view.getContext().getClass().getDeclaredField("mPhoneWindow"); field.setAccessible(true); Object obj = field.get(view.getContext()); java.lang.reflect.Method m1 = obj.getClass().getMethod("getContext"); activity = (Activity) (m1.invoke(obj)); } } catch (Exception e) { e.printStackTrace(); } } else { activity = (Activity) view.getContext(); } return activity; }
这样就可以了
[b]拿出微信 扫码关注下面的微信订阅号,及时获取更多推送文章
[/b]
关注后按照下面回复获取福利
1、回复“view大全”获取view的高清全部子类图
2、回复“ViewGroup”获取ViewGroup的高清[b]全部子类图
3、回复“TextView”获取TextView的高清全部子类图
4、回复“FrameLayout”获取FrameLayout的高清全部子类图
5、回复“LinearLayout”获取LinearLayout的高清全部子类图
6、回复“ImageView”获取ImageView的高清全部子类图[/b]
7、回复“小车”获取观看无线智能遥控小车
相关文章推荐
- android在学习——activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.policy.impl.PhoneWindow)
- com.android.internal.policy.DecorContext
- android在学习——activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.policy.impl.PhoneWindow)
- Android异常-Activity has leaked window com.android.internal.policy.impl.PhoneWindow... was originally
- ERROR/WindowManager(***): Activity *** has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@*** that was ori
- 【Android】【Dialog】com.android.internal.policy.PhoneWindow$DecorView not attached to window manager
- Android报错:has leaked window com.android.internal.policy.impl.PhoneWindow$Decor
- Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorVie
- android Activity has leaked window com.android.internal.policy.impl.PhoneWindow$Deco...
- MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$
- activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.p
- 异常:Activity has leaked window com.android.internal.policy.impl.PhoneWindow
- android.os.BinderProxy cannot be cast to com.android.server.am.Activit 解决办法
- com.com.adapterdialog.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$De
- android.view.ContextThemeWrapper cannot be cast to android.app.Activity
- has leaked window com.android.internal.policy.impl.PhoneWindow$ that was originally added here异常解决
- Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView
- Activity has leaked window com.android.internal.policy.impl.PhoneWindow
- [Android开发-异常]xxxActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView
- androidstudio解决Internal error please report to https://code.google.com/p/android/issues