Issue
Am trying to create a webview app displaying a splash screen once after the first lunch. Initially once i open the app the splash screen will show up then after 5 seconds it will load main activity VaultActivity
, but after i have added the line of code to check if splash screen ‘SplashScreen’ has been launched before, the app stopped loading VaultActivity
using the SPLASH_TIME_OUT
i set and also the splash screen still shows up anytime i lunch the app.
Initially
public class SplashScreen extends Activity {
private static int SPLASH_TIME_OUT 5000; // Splash screen timer
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// Start main activity
Intent intent new Intent(SplashScreen.this, VaultActivity.class);
startActivity(intent);
finish();
}
}, SPLASH_TIME_OUT);
}
}
Currently
public class SplashScreen extends Activity {
private static int SPLASH_TIME_OUT 5000; // Splash screen timer
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
SharedPreferences pref getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
if(pref.getBoolean("activity_executed", false)){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// Start main activity
Intent intent new Intent(SplashScreen.this, VaultActivity.class);
startActivity(intent);
finish();
}
}, SPLASH_TIME_OUT);
} else {
SharedPreferences.Editor ed pref.edit();
ed.putBoolean("activity_executed", true);
ed.commit();
}
}
}
My Manifest
<activity
android:name".SplashScreen"
android:launchMode"singleTask"
android:label"@string/app_name"
android:screenOrientation"portrait" >
<intent-filter>
<action android:name"android.intent.action.MAIN" />
<category android:name"android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name".VaultActivity"
android:label"@string/app_name"
android:screenOrientation"portrait">
<intent-filter>
<action android:name"android.intent.action.VIEW" />
<category android:name"android.intent.category.DEFAULT" />
<category android:name"android.intent.category.BROWSABLE" />
<data android:scheme"http"
android:host"example.com"
android:pathPrefix"/androidmobile" />
</intent-filter>
</activity>
Solution
🙂 you need just adding startActivity in else section.
public class SplashScreen extends Activity {
private static int SPLASH_TIME_OUT 5000; // Splash screen timer
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
SharedPreferences pref getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
final SharedPreferences.Editor ed pref.edit()
if(pref.getBoolean("activity_executed", false)){
//ed.putBoolean("activity_executed", true);
//ed.commit();
Intent intent new Intent(SplashScreen.this, VaultActivity.class);
startActivity(intent);
finish();
} else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// Start main activity
Intent intent new Intent(SplashScreen.this, VaultActivity.class);
startActivity(intent);
ed.putBoolean("activity_executed", true);
ed.commit();
finish();
}
}, SPLASH_TIME_OUT);
}
}
}
Answered By – Mahdi Rostami