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
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);
<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; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With