未找到用于处理默认活动意图的活动



当我尝试使用 从另一个活动启动默认活动时出现错误No Activity found to handle Intent

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

我想这是因为在默认活动的Android清单中,我android.intent.action.MAIN

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

有没有办法在之前完成默认活动时从另一个活动启动默认活动?

您正在尝试使用操作名称启动活动。

注意:如果没有指定其他类别,startActivity()始终将CATEGORY_DEFAULT添加到Intent(在这里,您的实习生中没有指定类别,因此它是默认值)。

因此,<activity><intent-filter>总是需要一个<category>,无论是DEFAULT还是其他东西(这里它需要默认值,这就是为什么错误说没有找到任何活动来处理默认活动的意图)

LAUNCHER类别表示此入口点应列在应用程序启动器中。

如果未显式指定 DEFAULT 类别,则Context.startActivity()方法需要DEFAULT类别来解析您的活动。

尝试指定两个意向过滤器:

<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); 启动活动(i);

最新更新