MainApp.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. /**
  2. * ownCloud Android client application
  3. *
  4. * @author masensio
  5. * @author David A. Velasco
  6. * Copyright (C) 2015 ownCloud Inc.
  7. *
  8. * This program is free software: you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License version 2,
  10. * as published by the Free Software Foundation.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. *
  20. */
  21. package com.owncloud.android;
  22. import android.app.Activity;
  23. import android.app.Application;
  24. import android.content.Context;
  25. import android.content.pm.PackageInfo;
  26. import android.content.pm.PackageManager;
  27. import android.os.Build;
  28. import android.os.Bundle;
  29. import com.owncloud.android.authentication.PassCodeManager;
  30. import com.owncloud.android.datamodel.ThumbnailsCacheManager;
  31. import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
  32. import com.owncloud.android.lib.common.OwnCloudClientManagerFactory.Policy;
  33. import com.owncloud.android.lib.common.utils.Log_OC;
  34. /**
  35. * Main Application of the project
  36. *
  37. * Contains methods to build the "static" strings. These strings were before constants in different
  38. * classes
  39. */
  40. public class MainApp extends Application {
  41. private static final String TAG = MainApp.class.getSimpleName();
  42. private static final String AUTH_ON = "on";
  43. @SuppressWarnings("unused")
  44. private static final String POLICY_SINGLE_SESSION_PER_ACCOUNT = "single session per account";
  45. @SuppressWarnings("unused")
  46. private static final String POLICY_ALWAYS_NEW_CLIENT = "always new client";
  47. private static Context mContext;
  48. public void onCreate(){
  49. super.onCreate();
  50. MainApp.mContext = getApplicationContext();
  51. boolean isSamlAuth = AUTH_ON.equals(getString(R.string.auth_method_saml_web_sso));
  52. OwnCloudClientManagerFactory.setUserAgent(getUserAgent());
  53. if (isSamlAuth) {
  54. OwnCloudClientManagerFactory.setDefaultPolicy(Policy.SINGLE_SESSION_PER_ACCOUNT);
  55. } else {
  56. OwnCloudClientManagerFactory.setDefaultPolicy(Policy.ALWAYS_NEW_CLIENT);
  57. }
  58. // initialise thumbnails cache on background thread
  59. new ThumbnailsCacheManager.InitDiskCacheTask().execute();
  60. if (BuildConfig.DEBUG) {
  61. String dataFolder = getDataFolder();
  62. // Set folder for store logs
  63. Log_OC.setLogDataFolder(dataFolder);
  64. Log_OC.startLogging();
  65. Log_OC.d("Debug", "start logging");
  66. }
  67. // register global protection with pass code
  68. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
  69. this.registerActivityLifecycleCallbacks( new ActivityLifecycleCallbacks() {
  70. @Override
  71. public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
  72. Log_OC.d(activity.getClass().getSimpleName(), "onCreate(Bundle) starting" );
  73. }
  74. @Override
  75. public void onActivityStarted(Activity activity) {
  76. Log_OC.d(activity.getClass().getSimpleName(), "onStart() starting" );
  77. PassCodeManager.getPassCodeManager().onActivityStarted(activity);
  78. }
  79. @Override
  80. public void onActivityResumed(Activity activity) {
  81. Log_OC.d(activity.getClass().getSimpleName(), "onResume() starting" );
  82. }
  83. @Override
  84. public void onActivityPaused(Activity activity) {
  85. Log_OC.d(activity.getClass().getSimpleName(), "onPause() ending");
  86. }
  87. @Override
  88. public void onActivityStopped(Activity activity) {
  89. Log_OC.d(activity.getClass().getSimpleName(), "onStop() ending" );
  90. PassCodeManager.getPassCodeManager().onActivityStopped(activity);
  91. }
  92. @Override
  93. public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
  94. Log_OC.d(activity.getClass().getSimpleName(), "onSaveInstanceState(Bundle) starting" );
  95. }
  96. @Override
  97. public void onActivityDestroyed(Activity activity) {
  98. Log_OC.d(activity.getClass().getSimpleName(), "onDestroy() ending" );
  99. }
  100. });
  101. }
  102. }
  103. public static Context getAppContext() {
  104. return MainApp.mContext;
  105. }
  106. // Methods to obtain Strings referring app_name
  107. // From AccountAuthenticator
  108. // public static final String ACCOUNT_TYPE = "owncloud";
  109. public static String getAccountType() {
  110. return getAppContext().getResources().getString(R.string.account_type);
  111. }
  112. // From AccountAuthenticator
  113. // public static final String AUTHORITY = "org.owncloud";
  114. public static String getAuthority() {
  115. return getAppContext().getResources().getString(R.string.authority);
  116. }
  117. // From AccountAuthenticator
  118. // public static final String AUTH_TOKEN_TYPE = "org.owncloud";
  119. public static String getAuthTokenType() {
  120. return getAppContext().getResources().getString(R.string.authority);
  121. }
  122. // From ProviderMeta
  123. // public static final String DB_FILE = "owncloud.db";
  124. public static String getDBFile() {
  125. return getAppContext().getResources().getString(R.string.db_file);
  126. }
  127. // From ProviderMeta
  128. // private final String mDatabaseName = "ownCloud";
  129. public static String getDBName() {
  130. return getAppContext().getResources().getString(R.string.db_name);
  131. }
  132. // data_folder
  133. public static String getDataFolder() {
  134. return getAppContext().getResources().getString(R.string.data_folder);
  135. }
  136. // log_name
  137. public static String getLogName() {
  138. return getAppContext().getResources().getString(R.string.log_name);
  139. }
  140. // user agent
  141. public static String getUserAgent() {
  142. String appString = getAppContext().getResources().getString(R.string.user_agent);
  143. String packageName = getAppContext().getPackageName();
  144. String version = "";
  145. PackageInfo pInfo = null;
  146. try {
  147. pInfo = getAppContext().getPackageManager().getPackageInfo(packageName, 0);
  148. if (pInfo != null) {
  149. version = pInfo.versionName;
  150. }
  151. } catch (PackageManager.NameNotFoundException e) {
  152. Log_OC.e(TAG, "Trying to get packageName", e.getCause());
  153. }
  154. // Mozilla/5.0 (Android) ownCloud-android/1.7.0
  155. String userAgent = String.format(appString, version);
  156. return userAgent;
  157. }
  158. }