Android应用点击扫描按钮报错ActivityNotFoundException:无法找到ScanActivity
嘿,这个ActivityNotFoundException我天天见,说白了就是系统找不到你要启动的ScanActivity嘛!结合你报错里的{com.myapptest/com.scanlibrary.ScanActivity},给你几个必查的方向,按顺序来大概率能解决:
第一步:检查
AndroidManifest.xml里有没有注册ScanActivity
这是最常见的原因!不管这个Activity是你自己写的还是扫描库自带的,都必须在主应用的清单文件里注册。如果是扫描库提供的com.scanlibrary.ScanActivity,你需要在AndroidManifest.xml里加上这段:<activity android:name="com.scanlibrary.ScanActivity" android:exported="true" <!-- Android 12+必须加这个属性,否则启动会失败 --> android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> <!-- 可根据需求调整主题 -->注意:如果扫描库是模块依赖,要确保模块清单能被主应用合并(默认开启,若手动关闭过
manifestMergerEnabled记得改回来)。第二步:检查启动
ScanActivity的代码是否写错了
看看你触发扫描按钮时的代码,是不是包名或类名拼错了?正确的启动代码示例:// 直接指定类名的方式 Intent scanIntent = new Intent(this, com.scanlibrary.ScanActivity.class); startActivity(scanIntent);或者跨包场景用组件名方式:
ComponentName scanComponent = new ComponentName("com.scanlibrary", "com.scanlibrary.ScanActivity"); Intent scanIntent = new Intent(); scanIntent.setComponent(scanComponent); startActivity(scanIntent);对比你代码里的包名和类名,是不是和报错里的
com.scanlibrary.ScanActivity完全一致?第三步:确认扫描库和OpenCV的依赖集成正确
依赖没加对的话,库的类根本不会被打包到APK里:- 本地aar/jar依赖,检查gradle里的引入代码:
implementation files('libs/scanlibrary.aar') implementation files('libs/opencv-android-sdk.aar') - 远程依赖要确保地址和版本号正确,且已同步gradle。
- 本地aar/jar依赖,检查gradle里的引入代码:
第四步:清理缓存重建项目
有时候Android Studio的缓存会搞鬼,试试:- 点击菜单栏
Build->Clean Project - 再点击
Build->Rebuild Project - 极端情况可删除项目根目录的
.gradle和app/build文件夹,重新同步gradle。
- 点击菜单栏
一般来说前两步就能解决问题,尤其是清单未注册的情况!
内容的提问来源于stack exchange,提问作者madhura21
相关产品推荐
相关产品推荐

