无法通过intent启动活动:ActivityNotFoundException

时间:2015-01-15 19:06:43

标签: android android-intent

我在Activity中定义了AndroidManifest.xml

   <activity
        android:name=".Splash"
        android:label="@string/app_name"
        android:noHistory="true" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

当我试图以这种方式调用它时:

Intent splashActivity = new Intent("android.intent.action.Splash");
mainAppContext.startActivity(splashActivity);

我明白了:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.Splash }

当我尝试以这种方式启动时:

Intent splashActivity = new Intent("android.intent.action.MAIN ");
mainAppContext.startActivity(splashActivity);

它打开一个Complete action using对话框,其中有很多选项,比如游戏商店等。 请帮助启动此Activity

4 个答案:

答案 0 :(得分:1)

Intent splashActivity = new Intent("android.intent.action.Splash");

没有 - 不 - 不!它应该

Intent splashActivity = new Intent(context, Splash.class);

如果您使用操作 - 您似乎想要某种类型的操作的活动,例如,在浏览器上查看网页。 在您的情况下,您必须使用具体活动并将其设置为意图


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

此操作不适用于您的应用,需要安装Android的启动器,在您的应用中找到启动它的活动

Official documentation about intent mechanism

答案 1 :(得分:1)

来自其他一些活动:

startActivity(new Intent(this, Splash.class));

答案 2 :(得分:0)

你想从哪里开展这项活动?以下行暗示Splash是您的主要Activity

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

您是否尝试从Splash本身启动Activity Splash?这将是有问题的。如果您要从其他Activity启动,则可以使用以下内容启动Splash

Intent intent = new Intent();
intent.setClass(YourCurrentActivity.this, Splash.class);
startActivity(intent);

答案 3 :(得分:0)

当您尝试使用或启动未声明为Mainfeast.xml文件的活动时,会发生活动未找到异常。

当您想要开始任何活动时,您需要使用intent启动该活动。但在android&#34; android.intent.action.Splash&#34;存在意图行动。并且您已声明以下intent过滤器

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

&#34; android.intent.action.MAIN&#34;这是动作名称,表示这是首先要启动的活动。和android发送此意图,并且使用此意图操作注册的活动是首先要启动的活动。 因此,要启动启动活动,您不需要任何意图。你只需要简单地运行这个项目。但如果你想从泼水活动开始另一项活动,那么你需要做一些事情。

Intent intent = new Intent(Context, ActivityName.class);
startActivity(intent); 
or 
startActivityForResult(intent, requestCode);  

并记住您必须将该活动声明为mainfeast.xml