问题现象:无论是调试运行程序还是通过命令行运行程序,都会以Error type 3的提示。
如下:
Error while executing: am start -n "package_name/package_name.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=package_name/.MainActivity } Error type 3 Error: Activity class {package_name/package_name.MainActivity} does not exist. Error while Launching activity
解决方案:
1.无效的方案:尝试了clean project,重新新建android studio项目,重启电脑,重启android设备都不行。
2.有效的方案:在build.gradle下面修改android->default config->application id可以解决问题,
即,把com.toycloud.toycloudassistant修改成com.toycloud.toycloudassistant2。
具体如下
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.toycloud.toycloudassistant2"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
3.有效的方案:不过,要从根本上解决问题只能重新烧录android系统。重新烧录可以清空包管理器的数据库,从而解决问题。
通过上面的现象来看,这个问题的根因还是包管理器出现了bug。
出现此现象时,调用pm.queryIntentActivities返回是空,而传入的条件仅仅是限制了包名。
导致问题的原因很可能是之前调用了setComponentEnabledSetting方法。
// PackageManager pm = getPackageManager();
// ComponentName cn = new ComponentName(this,MainActivity.class);
// pm.setComponentEnabledSetting(cn,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
// PackageManager.DONT_KILL_APP);