private void setupLocalFileBootLoaderAndRunProject(Runnable pageActivityLauncher) { LocalFileBootloader.mShouldExtractAssets = true; LocalFileBootloader.setup( this, pageActivityLauncher, new Runnable() { @Override public void run() { Toast.makeText( MonacaSplashActivity.this, "Application launch fail...", Toast.LENGTH_LONG) .show(); finish(); } }); }
public class MonacaSplashActivity extends Activity { private static final String TAG = MonacaSplashActivity.class.getSimpleName(); protected static final String SPLASH_IMAGE_PATH = "android/splash_default.png"; /** modify this if want to use LocalFileBootloader */ @SuppressWarnings("unused") public static boolean usesLocalFileBootloader = (true && LocalFileBootloader.needToUseLocalFileBootloader()); protected ImageView splashView; protected Handler handler; protected Runnable pageLauncher; protected MonacaApplication app; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); app = (MonacaApplication) getApplication(); loadAppJson(); registerGCM(); setup(); } protected void setup() { Runnable pageActivityLauncher = new Runnable() { @Override public void run() { if (hasSplashScreenExists()) { splashView = new ImageView(getApplicationContext()); splashView.setScaleType(ScaleType.FIT_CENTER); InputStream stream = getSplashFileStream(); splashView.setImageBitmap(BitmapFactory.decodeStream(stream)); splashView.setBackgroundColor(app.getAppJsonSetting().getSplashBackgroundColor()); try { stream.close(); } catch (Exception e) { } setContentView(splashView); overridePendingTransition( mobi.monaca.framework.psedo.R.anim.monaca_none, mobi.monaca.framework.psedo.R.anim.monaca_slide_close_exit); handler = new Handler(); pageLauncher = new Runnable() { @Override public void run() { Intent intent = createActivityIntent(); startActivity(intent); finish(); } }; handler.postDelayed(pageLauncher, 1000); } else { goNextActivityWithoutSplash(); } } }; if (shouldExtractAsset()) { MyLog.v(TAG, "should extract asset!!!!"); setupLocalFileBootLoaderAndRunProject(pageActivityLauncher); } else { if (!usesLocalFileBootloader) { pageActivityLauncher.run(); LocalFileBootloader.mShouldExtractAssets = false; } else { setupLocalFileBootLoaderAndRunProject(pageActivityLauncher); } } } private void setupLocalFileBootLoaderAndRunProject(Runnable pageActivityLauncher) { LocalFileBootloader.mShouldExtractAssets = true; LocalFileBootloader.setup( this, pageActivityLauncher, new Runnable() { @Override public void run() { Toast.makeText( MonacaSplashActivity.this, "Application launch fail...", Toast.LENGTH_LONG) .show(); finish(); } }); } // same as shouldUseLocalFileBootloader but has higher priority protected boolean shouldExtractAsset() { return app.getAppJsonSetting().shouldExtractAssets(); } protected void loadAppJson() { app.loadAppJsonSetting(); } protected void registerGCM() { try { String senderId = app.getAppJsonSetting().getSenderId(); // GCM registration process GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { GCMRegistrar.register(this, senderId); } else { ((MonacaApplication) getApplication()).sendGCMRegisterIdToAppAPI(regId); } } catch (Exception e) { MyLog.d(TAG, "this device or application does not support GCM"); e.printStackTrace(); } } protected Intent createActivityIntent() { Intent intent = new Intent(MonacaSplashActivity.this, MonacaPageActivity.class); Intent received = getIntent(); Bundle bundle = received.getExtras(); if (received != null && bundle != null) { GCMPushDataset pushdata = (GCMPushDataset) bundle.get(GCMPushDataset.KEY); if (pushdata != null) { intent.putExtra(GCMPushDataset.KEY, pushdata); } } return intent; } protected void goNextActivityWithoutSplash() { Intent intent = createActivityIntent(); intent.putExtra("launchedWithoutSplash", true); startActivity(intent); finish(); } protected boolean hasSplashScreenExists() { if (app.getAppJsonSetting().getAutoHide() == false) { return false; } try { InputStream stream = getResources().getAssets().open(SPLASH_IMAGE_PATH); stream.close(); return true; } catch (IOException e) { return false; } } @Override public void onBackPressed() { if (handler != null && pageLauncher != null) { handler.removeCallbacks(pageLauncher); } super.onBackPressed(); } protected InputStream getSplashFileStream() { try { return getResources().getAssets().open(SPLASH_IMAGE_PATH); } catch (IOException e) { return null; } } @Override protected void onDestroy() { super.onDestroy(); } }