Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android.content.ActivityNotFoundException: No Activity found to handle Intent splash screen

Tags:

I am having an issue with loading up a new intent after my splash screen. I have looked at questions relating to this exception but they all seem to be dealing with thing like google play or google maps not being referenced correctly this is not the case for me.

These are the related questions I have looked at

Not found activity to handle intent?

activity not found to handle intent

no activity found to handle intent

Below is my manifest code

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.android.main"     android:versionCode="1"     android:versionName="1.0" >      <uses-sdk android:minSdkVersion="15" />     <uses-permission android:name="android.permission.INTERNET"/>      <application         android:icon="@drawable/ic_launcher"         android:label="@string/app_name" >         <activity             android:name=".Splash"             android:label="@string/app_name" >             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                  <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>         <activity             android:name=".HomePage"             android:label="@string/app_name" >             <intent-filter>                 <action android:name="android.intent.action.HOMEPAGE" />                  <category android:name="android.intent.category.DEFAULT" />             </intent-filter>         </activity>         <activity             android:name=".OrderPlaced"             android:label="@string/app_name" >             <intent-filter>                 <action android:name="android.intent.action.ORDERPLACED" />                  <category android:name="android.intent.category.DEFAULT" />             </intent-filter>         </activity>     </application>  </manifest> 

Here is the code for the class splash

package com.android.main;  import android.app.Activity; import android.content.Intent; import android.os.Bundle;  public class Splash extends Activity{      @Override     protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);         setContentView(R.layout.splash);          Thread timer = new Thread(){             public void run(){                 try{                     sleep(1000);                 }catch(InterruptedException e) {                     e.printStackTrace();                 }finally{                     Intent openStartingPoint = new Intent("com.android.main.HOMEPAGE");                     startActivity(openStartingPoint);                 }             }         };         timer.start();     }      @Override     protected void onPause() {          super.onPause();         finish();     }   } 

And here is the class HomePage I am trying to load after the splash screen

package com.android.main;  import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView;  public class HomePage extends Activity {     /** Called when the activity is first created. */       TextView name;     EditText editName;     TextView drinks;     Spinner drinksSpinner;     TextView message;     CheckBox checkbox;     Button createOrderButton;       @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         createOrder();     }      public void createOrder(){          createOrderButton = (Button) findViewById(R.id.bCreateOrder);         createOrderButton.setOnClickListener(new View.OnClickListener() {              @Override             public void onClick(View v) {                 postInformationtoAPI();              }              private void postInformationtoAPI() {                  goToOrderCompleted();             }              private void goToOrderCompleted() {                 Intent intent = new Intent(HomePage.this , OrderPlaced.class);                 HomePage.this.startActivity(intent);                 Log.i("onClick", "trying to start new activity to change layout");             }         });      } } 

The app force quits after loading the splash screen and gives the following exception

03-14 22:32:33.553: E/AndroidRuntime(3166): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.main.HOMEPAGE } 

Any help with this would be greatly appreciated

like image 622
DavedCusack Avatar asked Mar 25 '13 12:03

DavedCusack


2 Answers

You have to differentiate the Intent's Constructor,

 Intent openStartingPoint = new Intent("com.android.main.HOMEPAGE"); 

Which assume com.android.main.HOMEPAGE as Intent's action Filter. Which is not available in your application's android manifest.xml file. You have

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

which should be,

<action android:name="com.android.main.HOMEPAGE" />

OR just change it with,

Intent openStartingPoint = new Intent(Splash.this, HOMEPAGE.class); 
like image 111
user370305 Avatar answered Oct 20 '22 21:10

user370305


        <activity         android:label="@string/app_name"         android:name=".SplashScreen"         android:screenOrientation="landscape"         android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >         <intent-filter >             <action android:name="android.intent.action.MAIN" />              <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>     </activity>     <activity         android:name="com.android.main.HOMEPAGE"         android:screenOrientation="landscape"         android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >         <intent-filter >             <action android:name="com.android.main.HOMEPAGE" />              <category android:name="android.intent.category.DEFAULT" />         </intent-filter>     </activity> 

Also i would have a timer task to display splash screen

public class SplashScreen extends Activity{  Timer splashTimer; SplashTimerHandler splashTimerHandler;  private boolean applicationPaused=false;  @Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,             WindowManager.LayoutParams.FLAG_FULLSCREEN);     requestWindowFeature(Window.FEATURE_NO_TITLE);      setContentView(R.layout.main);      this.setSplash();   }  private void setSplash()  {     this.splashTimerHandler=new SplashTimerHandler();     this.splashTimer=new Timer();      this.splashTimer.schedule(this.splashTimerHandler, 0, 1000);  }  @Override public void onPause() {     super.onPause();     this.applicationPaused=true;     this.closeSplashTimer(); }  @Override public void onResume() {     super.onResume();      if(this.applicationPaused)     {         this.applicationPaused=false;         this.closeSplashTimer();         this.setSplash();     } }  public class SplashTimerHandler extends TimerTask{      int splashTimerCounter=0;     @Override     public void run()     {         splashTimerCounter++;         if(splashTimerCounter>2)         {             runOnUiThread(splashTimeOver);         }            }      private Runnable splashTimeOver=new Runnable() {          @Override         public void run()         {             closeSplashTimer();             startHomeScreen();         }     };       }  protected void closeSplashTimer()  {     if(this.splashTimer!=null)     {         this.splashTimer.cancel();         this.splashTimer=null;     }  }  private void startHomeScreen()  {     this.closeSplashScreen();     startActivity(new Intent("com.android.main.HOMEPAGE"));  }  private void closeSplashScreen() {     this.closeSplashTimer();     this.finish();  }  @Override public boolean onKeyDown(int keycode, KeyEvent event) {     if(keycode==KeyEvent.KEYCODE_BACK)     {         this.closeSplashScreen();     }     return true; }    } 
like image 39
Raghunandan Avatar answered Oct 20 '22 21:10

Raghunandan