当我尝试使用 从另一个活动启动默认活动时出现错误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);