ClassNotFoundException for Activity class

本文详细介绍了在Android开发过程中遇到ClassNotFoundException错误时的排查步骤,包括检查Manifest.xml配置、确认Activity名称、导入外部包以及清理工程等方法,帮助开发者快速定位并解决该问题。
android:ClassNotFoundException for Activity class的解决方法个人按下面顺序排查:
1.
在Manifest.xml中查看Activity的名字是否书写正确。
2.
在Manifest.xml确认Activity标签中的android:name属性的格式,例如我的activity的名字是helloworld,确认android:name=”.helloworld”(其中的点很重要)。
3.
如果有添加外部包的情况下,在工程根目录下建libs目录,然后将需要导入的外部包放入此目录内再add jars。
4.
如果上面都确保OK的情况下仍发生问题的话,clean工程->关闭eclipse->在命令行中重启adb(adb kill-server adbstart-server)->打开eclipse->编译启动。
 
上面4步基本能解决问题
帮我完善以下代码, activityThreadClass.getDeclaredField("sCurrentActivityThread")是获取当前活动的ActivityThread,改成所有的ActivityThread,要完善的代码如下:【 public static Context getAppContextFromActivityPath(String activityPath) { try { // 获取 ActivityThread 实例 Class<?> activityThreadClass = Class.forName("android.app.ActivityThread"); Field currentActivityThreadField = activityThreadClass.getDeclaredField("sCurrentActivityThread"); currentActivityThreadField.setAccessible(true); Object activityThread = currentActivityThreadField.get(null); // 获取 ActivityThread 中的 mActivities 字段,该字段存储了当前所有活动的 Activity 信息 Field mActivitiesField = activityThreadClass.getDeclaredField("mActivities"); mActivitiesField.setAccessible(true); Map<Object, Object> mActivities = (Map<Object, Object>) mActivitiesField.get(activityThread); // 遍历 mActivities 找到目标 Activity 实例 for (Object activityClientRecord : mActivities.values()) { Class<?> activityClientRecordClass = activityClientRecord.getClass(); Field activityField = activityClientRecordClass.getDeclaredField("activity"); activityField.setAccessible(true); Activity activity = (Activity) activityField.get(activityClientRecord); String className = activity.getClass().getName(); if (className.contains("didi")) { // 获取 Activity 的 mInstrumentation 字段 Class<?> activityClass = Activity.class; Field mInstrumentationField = activityClass.getDeclaredField("mInstrumentation"); mInstrumentationField.setAccessible(true); Instrumentation instrumentation = (Instrumentation) mInstrumentationField.get(activity); // 通过 Instrumentation 获取应用的 Context return instrumentation.getTargetContext().getApplicationContext(); } } } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) { Log.e(FloatService.TAG,"获取滴滴车主上下文报错",e); FloatService.getInstance().showToast("获取滴滴车主上下文报错"); } return null; } 】
最新发布
10-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值