无法识别启动活动:找不到默认活动。

62

我是Android的新手,遇到了一个问题。 控制台显示“无法识别启动活动:未找到默认活动”。

<intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

在清单文件中。我已经尝试了“无效化缓存/重启”,但仍未奏效。同时,包含主Activity的类文件在Android Studio中变成了绿色。我不知道这是什么意思。这是我的清单文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mrrobot.mycoolweather" >
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <Activity       android:name="com.example.mrrobot.mycoolweather.activity.ChooseAreaActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </Activity>
</application>

</manifest>

我想要使用chooseAreaActivity作为启动活动。

enter image description here
18个回答

107

在您的清单文件中,针对主活动,您需要添加此类别LAUNCHER(应用程序启动时的第一个活动):

<activity
    android:name=".MainActivity"
    android:label="YourAppName"
    android:theme="@style/AppTheme.NoActionBar" >
      <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</activity>

对于其他活动,您需要将类别更改为DEFAULT

<activity
    android:name=".OtherActivity"
    android:theme="@style/AppTheme.NoActionBar" >
    <intent-filter>
            <action android:name="package.OtherActivity" />

            <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

查看这个Activity和这个启动另一个Activity

所以你的代码是:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mrrobot.mycoolweather" >
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".activity.ChooseAreaActivity"
        android:label="@string/app_name" >
          <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
    </activity>
</application>

</manifest>

22

尽管这个问题有点过时,我想在所有给出的答案中补充以下内容:

对于多模块项目,请仔细检查您修改的Manifest是否与您要运行的Configuration相对应。

我曾经也遇到过同样的问题,花了20分钟才发现我试图运行错误的配置(在ModuleB中有一个Application,而我认为我正在运行ModuleA的一个配置)。

有时候你会在其他默认可运行模块上工作,所以你必须进行更改。 输入图像描述


14

有时候,重启 Android Studio 就可以解决问题。

点击"文件"然后点击"无效缓存并重启"


我遇到了“找不到默认活动”问题,几次重启 Android Studio 后问题得以解决。


6

如果您在升级IDEA、升级Android Studio版本或生成新的APK后发现该错误,可能需要刷新IDE缓存。

File -> Invalidate Caches / Restart...

6
在你的清单文件中,有一个错误的元素名称(将Activity更改为activity)
<Activity       android:name="com.example.mrrobot.mycoolweather.activity.ChooseAreaActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </Activity>

将其改为:

 <activity       android:name="com.example.mrrobot.mycoolweather.activity.ChooseAreaActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

@JerabekJakub 有时候安卓工作室无法找到活动,因此出现索引问题。 - Rohit Kumar

3

很可能操作不在清单中。 以下是修复方法:

附有一张图片 manifest


目前你的回答不够清晰,请[编辑]以添加更多细节,以帮助其他人理解这如何回答所问的问题。您可以在帮助中心中找到有关撰写良好答案的更多信息。 - Community

2

当我将Android Studio升级到2021.1.1.23时,不知何故我的运行配置从app切换到了models,导致出现了这个错误。将其切换回app后,问题得以解决。


当我尝试下载、构建和运行ExoPlay Uamp演示程序时,我遇到了同样的问题。选择'app'而不是默认的'automotive'也解决了这个问题。 - steven smith

1

在将启动活动更改为添加intent-filter但未使其导出后,我在Android 12+中遇到了此错误。

所以不要忘记:

           
android:exported="true"


1
我已经尝试了这里和其他问题的解决方案。
  • 清除、重建和使无效并重新启动
  • 确保活动具有 LAUNCHER 作为类别
  • 删除 Android 缓存文件夹
最后,活动标签是 <activity android:name="com.exmaple.todo.MainActivity" />。当我将其更改为 <activity android:name=".MainActivity" /> 时,应用程序工作了。
如果其他解决方案不起作用,希望它能对你有所帮助。

1
退出您的Android Studio IDE。然后在.AndroidStudio3.2文件夹中找到文件夹。
位置

C:\Users\YOUR_USERNAME\.AndroidStudio3.2\system\caches

例如。
假设您的用户名为Admin。

C:\Users\Admin\.AndroidStudio3.2\system\caches

删除 caches 文件夹并启动您的 Android Studio IDE。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接