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;
   }
 }
  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 void loadAppJson() {
   app.loadAppJsonSetting();
 }
 // same as shouldUseLocalFileBootloader but has higher priority
 protected boolean shouldExtractAsset() {
   return app.getAppJsonSetting().shouldExtractAssets();
 }