[Android] 錯誤:找不到默認活動


Answers

我無法評論為什麼IntelliJ的升級可能會導致此問題,因為我不使用它。

但是,該錯誤:“未找到缺省活動”似乎告訴您,您沒有在AndroidManifest.xml中聲明的活動,該活動被標記為主要活動,將在應用程序啟動時啟動。

你應該至少有一個看起來像這樣的活動:

<activity
        android:name="com.your.package.name.YourActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

如果您至少沒有一項活動帶有這樣的意向過濾器,那麼您很可能會看到您在此處包含的錯誤消息。

您應該將該意圖過濾器添加到您希望在啟動應用程序時打開的活動,並且這應該可以解決您的問題。

Question

我將IntelliJ Idea 12.0.4升級到12.10。

現在我的Android項目中的所有模塊都給出了錯誤:

錯誤:找不到默認活動

我恢復到12.0.4,它的工作。

有任何想法嗎 ?? 我認為這可能與一些未安裝的插件有關,因為唯一的其他事情可能是本地配置,但是我刪除了配置文件夾來確認,但這並沒有改變任何內容。




上面沒有任何幫助。 一段時間後,我發現IDEA將操作名稱更改為大寫。 喜歡:

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

恢復正常後,IDEA識別默認活動:

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



錯誤:找不到默認活動

我解決了這個問題
運行>>編輯配置>> Android應用程序>>在“啟動”編輯框中輸入默認活動類的路徑。




我將我的意圖過濾器更改為

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

只需添加DEFAULT選項。 我正在使用Process Phoenix庫,它促使我定義一個默認意圖。 這增加解決了我的問題。




Android Manifest.xml設置如下的開始活動

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

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



那麼我也有這個錯誤,

錯誤:找不到默認活動

在我的情況下,它是用於磨損模塊..我不需要一個活動,所以我所做的只是簡單的

  1. 去編輯configuaration - > wear-> Launch Options-> Launch-> Nothing。
  2. 應用更改。單擊確定。
  3. 從清單文件中刪除現有的默認活動代碼。

注意:不要忘記清理項目和同步Gradle文件。




我遇到了同樣的問題。 由於某些原因,android Studio將大多數XML文件(包括清單)中的所有android:name屬性替換為Android Studio中未識別的android:subject

正如你在上面的圖片中看到的,IDE不能識別android:subject屬性。 因此,它將無法讀取指定MainActivty的行。

解決方案是簡單地更改每個android:subject android:name ,然後從生成菜單 - >重建項目重建該項目。 重建項目時可能會遇到同樣的問題,因此請按照上述方法進行操作。




我有這個錯誤。

並發現,在啟動器活動中的清單文件中,我沒有將動作和類別置於意圖過濾器中。

錯一:

 <activity
  android:name=".VideoAdStarter"
  android:label="@string/app_name">

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

  </activity>

正確對象,真愛:

<activity
  android:name=".VideoAdStarter"
  android:label="@string/app_name">

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

  </activity>



如果您的應用程序沒有活動(例如只有服務),請將運行/調試配置“啟動”選項更改為Nothing。




那麼我有時候不了解Android Studio ...

我遇到了同樣的問題,並嘗試了這裡所說的答案,但無濟於事。 然後我改變了一件事:我的意圖過濾器中的動作是將動作名稱全部放在大寫字母中,然後我將其更改為小寫字母,只留下帽子中的單詞MAIN,並解決了問題! 多荒唐啊! 我希望這可以幫助某人。




醜但為我工作:

有這個錯誤消息,我的問題是在一個模塊中,我剛剛從我的模塊的清單中完全刪除應用程序標籤,它的工作。

(也可以從模塊庫中刪除ic_launcher)

是:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mymodule"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="23" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
       >
        <activity
            android:name="com.example.mymodule.MainActivity"
            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>

現在:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mymodule"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="23" />


</manifest>



這樣做的正確方法是將以下內容添加到Manifest文件中:

    <activity
        android:name="FULL_NAME_OF_YOUR_ACTIVITY"
        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> </application>

不需要使緩存失效。




如果您正在開發一個小部件應用程序,該解決方案應該適合您:

  1. 轉到Edit Configuration
  2. Launch Option設置為nothing



剛剛在android studio 2.1.2上遇到了這個錯誤。 通過將MAIN / LAUNCHER意圖過濾器添加到風味清單中的默認活動來解決,儘管過濾器已經在默認清單中處於默認活動狀態。 它甚至在合併清單,但工作室無法找到它,直到我在兩個清單中復製過濾器。




我從一個演示程序開始並對其進行了修改。 我將源代碼中的java路徑從com - > example - > foo更改為我自己的並編輯了清單; 然而,Android Studio(0.8.7)變得非常困惑。

我嘗試了上面列出的所有內容,但沒有一個適用於我。 也許它會讓事情變得更糟?

我的最終解決方案是通過在Android Studio中打開它(又名文本編輯器)來編輯.idea子目錄中的<projectname>.iml

之前:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
</content>

我(重新)添加了src目錄(第二行)。 後:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
</content>

保存後,Android Studio重新加載並開始按預期運行。