Debopam Mitra
Debopam Mitra

Reputation: 1870

Activity not launching correctly although described in Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.app.android"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.StyledCustom" >
        <activity
            android:name=".SplashActivity"
            android:label="@string/title_activity_main"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"
            android:theme="@style/Theme.StyledCustom" >
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

I'm including the SplashActivity.java (I am using ActionBarSherlock):

package com.app.android;

import com.app.android.R;

import android.content.Intent;
import android.os.Bundle;

import com.actionbarsherlock.app.SherlockActivity;

public class SplashActivity extends SherlockActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        getSupportActionBar().hide();
        Thread timerSplash = new Thread(){
            @Override
            public void run() {
                try{
                    int i = 0;
                    while(i < 1000){
                        i+=100;
                        sleep(100);
                    }
                    startActivity(new Intent("com.app.android.MainActivity"));
                }catch(Exception ex){
                }finally{
                    finish();
                }
            }
        };
        timerSplash.start();
    }
}

What I am facing is that my MainActivity is getting Launched before SplashActivity. Also a warning is generated at MainActivity activity node in AndroidManifest.xml : "Exported activity does not require permission"

Can any one say what is happening?

Upvotes: 0

Views: 2010

Answers (2)

Nikhil
Nikhil

Reputation: 16196

In Manifast.xml:

<activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"
            android:theme="@style/Theme.StyledCustom" >
        </activity>

And Class as Below

public class SplashActivity extends SherlockActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        getSupportActionBar().hide();
        Thread timerSplash = new Thread(){
            @Override
            public void run() {
                try{
                    int i = 0;
                    while(i < 1000){
                        i+=100;
                        sleep(100);
                    }
                   Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                   startActivity(intent);
                }catch(Exception ex){
                }finally{
                    finish();
                }
            }
        };
        timerSplash.start();
    }
}

Upvotes: 1

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

define Activity as in Manifast.xml:

<activity
    android:name=".MainActivity"
    android:label="@string/title_activity_main"
    android:theme="@style/Theme.StyledCustom" >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

and start as:

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.app.android", "com.app.android.MainActivity"));
startActivity(intent);

Upvotes: 1

Related Questions