[android]没有 Activity 找到处理 Intent 为默认Activity

发布时间: 2017/3/19 14:14:48
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我得到错误 No Activity found to handle Intent 当我试着启动默认 Activity 从另一个 Activity 使用

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

我猜这是因为在默认的 AndroidManifest Activity 我有android.intent.action.MAIN

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

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

有没有办法启动默认 Activity 从另一个 Activity 当默认 Activity 是前完成吗?

解决方法 1:

你确实想要发动 activity 使用的操作名称。

startActivity() 始终添加 CATEGORY_DEFAULTIntent 如果是指定的任何其他类别 (在这里,你有没有类别指定在您上网所以其默认值)。

因此, <intent-filter><activity> 总是需要 <category> ,是否 DEFAULT 或其他的东西 (在这里它需要默认这就是为什么错误说Activity 找到处理 Intent 为默认 Activity )

启动程序类别表示,此项 point 中应列出 application 发射器。

默认类别是必需的 Context.startActivity() 方法来解决你 activity 当其组件名称未显式指定。

尝试指定两个 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>

那么你就可以开始 activity 使用操作名称︰

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

或只是你可以使用类名︰

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