簡體   English   中英

找不到活動來處理默認活動的Intent

[英]No Activity found to handle Intent for Default Activity

當我嘗試從另一個Activity啟動默認活動時,我收到錯誤No Activity found to handle Intent

Intent start = new Intent("com.name.name.MainActivity");
startActivity(start);
finish();

我想這是因為在AndroidManifest for Default Activity中我有android.intent.action.MAIN

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

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

有沒有辦法在默認活動完成之前從另一個Activity啟動默認活動?

您正嘗試使用操作名稱啟動活動。

注意 :如果沒有指定其他類別,則startActivity()始終將CATEGORY_DEFAULT添加到Intent (此處您沒有在internt中指定類別,因此它的默認值)。

因此, <activity><intent-filter>總是需要<category> ,無論是DEFAULT還是其他東西(這里需要默認值,這就是為什么錯誤說沒有找到活動來處理默認活動的Intent

LAUNCHER類別表示此入口點應列在應用程序啟動器中。

Context.startActivity()方法需要DEFAULT類別,以便在未明確指定其組件名稱時解析您的活動。

嘗試指定兩個intent過濾器:

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:windowSoftInputMode="stateHidden"
          android:screenOrientation="portrait">
    <intent-filter>
          <action android:name="android.intent.action.MAIN"/>
          <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
          <action android:name="com.name.name.MainActivity"/>
          <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

然后,您可以使用操作名稱啟動活動:

Intent intent = new Intent("com.name.name.MainActivity");
startActivity(intent);

或者只是你可以使用類名:

Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);

Intent i = new Intent(otheractivity.this,MainActivity.class); startActivity(ⅰ);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM