Selaa lähdekoodia

Some work on Firebase integration

Mario Danic 8 vuotta sitten
vanhempi
commit
1732f7dc73
27 muutettua tiedostoa jossa 187 lisäystä ja 104 poistoa
  1. 0 30
      src/custom/AndroidManifest.xml
  2. 0 50
      src/custom/java/com/owncloud/android/CustomApp.java
  3. 3 0
      src/custom/res/values/setup.xml
  4. 21 0
      src/main/java/com/owncloud/android/MainApp.java
  5. 4 0
      src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java
  6. 20 13
      src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java
  7. 8 3
      src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java
  8. 10 0
      src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java
  9. 13 3
      src/main/java/com/owncloud/android/ui/activity/GenericExplanationActivity.java
  10. 9 0
      src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java
  11. 8 0
      src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java
  12. 9 0
      src/main/java/com/owncloud/android/ui/activity/ManageSpaceActivity.java
  13. 10 0
      src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java
  14. 10 3
      src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java
  15. 4 0
      src/main/java/com/owncloud/android/ui/activity/Preferences.java
  16. 11 2
      src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java
  17. 5 0
      src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java
  18. 10 0
      src/main/java/com/owncloud/android/ui/activity/UploadPathActivity.java
  19. 10 0
      src/main/java/com/owncloud/android/ui/activity/WhatsNewActivity.java
  20. 8 0
      src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java
  21. 1 0
      src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java
  22. 2 0
      src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java
  23. 2 0
      src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
  24. 2 0
      src/main/java/com/owncloud/android/ui/fragment/SearchShareesFragment.java
  25. 2 0
      src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java
  26. 2 0
      src/main/java/com/owncloud/android/ui/fragment/UploadListFragment.java
  27. 3 0
      src/main/res/values/setup.xml

+ 0 - 30
src/custom/AndroidManifest.xml

@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Nextcloud Android client application
-
-  Copyright (C) 2017  Mario Danic
-
-  This program is free software: you can redistribute it and/or modify
-  it under the terms of the GNU Affero General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU Affero General Public License for more details.
-
-  You should have received a copy of the GNU Affero General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          xmlns:tools="http://schemas.android.com/tools">
-
-
-    <application
-        android:name="com.owncloud.android.CustomApp"
-        tools:replace="android:name">
-
-    </application>
-
-</manifest>

+ 0 - 50
src/custom/java/com/owncloud/android/CustomApp.java

@@ -1,50 +0,0 @@
-/**
- * Nextcloud Android client application
- *
- * @author Mario Danic
- * Copyright (C) 2017 Mario Danic
- * Copyright (C) 2017 Nextcloud GmbH
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package com.owncloud.android;
-
-import com.google.firebase.analytics.FirebaseAnalytics;
-
-/**
- * Custom App class for custom builds
- */
-
-public class CustomApp extends MainApp {
-
-    private FirebaseAnalytics firebaseAnalytics;
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-
-        firebaseAnalytics = FirebaseAnalytics.getInstance(this);
-    }
-
-    private FirebaseAnalytics getFirebaseAnalyticsInstance() {
-        /*
-        In order for Firebase Analytics to work, you also need to
-        put a proper google-services.json in src/custom folder
-
-        If that file is flawed, nothing will be sent to Firebase
-         */
-        return firebaseAnalytics;
-    }
-
-}

+ 3 - 0
src/custom/res/values/setup.xml

@@ -98,6 +98,9 @@
     <!-- login data links -->
     <string name="login_data_own_scheme" translatable="false">cloud</string>
 
+    <!-- analytics enabled -->
+    <bool name="analytics_enabled">false</bool>
+
 </resources>
 
 

+ 21 - 0
src/main/java/com/owncloud/android/MainApp.java

@@ -34,6 +34,7 @@ import android.support.multidex.MultiDexApplication;
 import android.support.v4.util.Pair;
 
 import com.evernote.android.job.JobManager;
+import com.google.firebase.analytics.FirebaseAnalytics;
 import com.owncloud.android.authentication.PassCodeManager;
 import com.owncloud.android.datamodel.SyncedFolder;
 import com.owncloud.android.datamodel.SyncedFolderProvider;
@@ -80,6 +81,8 @@ public class MainApp extends MultiDexApplication {
 
     private static SyncedFolderObserverService mObserverService;
 
+    private static FirebaseAnalytics firebaseAnalytics;
+
     @SuppressWarnings("unused")
     private boolean mBound;
 
@@ -89,6 +92,12 @@ public class MainApp extends MultiDexApplication {
         JobManager.create(this).addJobCreator(new NCJobCreator());
         MainApp.mContext = getApplicationContext();
 
+        firebaseAnalytics = FirebaseAnalytics.getInstance(this);
+
+        if (!getResources().getBoolean(R.bool.analytics_enabled)) {
+            firebaseAnalytics.setAnalyticsCollectionEnabled(false);
+        }
+
         SharedPreferences appPrefs =
                 PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         MainApp.storagePath = appPrefs.getString(Preferences.PreferenceKeys.STORAGE_PATH, Environment.
@@ -319,4 +328,16 @@ public class MainApp extends MultiDexApplication {
             mBound = false;
         }
     };
+
+    public static FirebaseAnalytics getFirebaseAnalyticsInstance() {
+        /*
+        In order for Firebase Analytics to work, you also need to
+        put a proper google-services.json in src/custom folder
+
+        If that file is flawed, nothing will be sent to Firebase
+         */
+        return firebaseAnalytics;
+    }
+
+
 }

+ 4 - 0
src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -107,6 +107,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
 
     private static final String TAG = AuthenticatorActivity.class.getSimpleName();
 
+    private static final String SCREEN_NAME = "Login";
+
     public static final String EXTRA_ACTION = "ACTION";
     public static final String EXTRA_ACCOUNT = "ACCOUNT";
 
@@ -714,6 +716,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
     protected void onResume() {
         super.onResume();
 
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+
         // bound here to avoid spurious changes triggered by Android on device rotations
         mHostUrlInput.setOnFocusChangeListener(this);
         mHostUrlInput.addTextChangedListener(mHostUrlInputWatcher);

+ 20 - 13
src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java

@@ -20,9 +20,6 @@
 
 package com.owncloud.android.ui.activity;
 
-import java.io.File;
-import java.util.ArrayList;
-
 import android.accounts.Account;
 import android.content.Context;
 import android.content.Intent;
@@ -42,14 +39,17 @@ import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.utils.Log_OC;
-
 import com.owncloud.android.ui.dialog.IndeterminateProgressDialog;
 import com.owncloud.android.utils.FileStorageUtils;
 
+import java.io.File;
+import java.util.ArrayList;
+
 
 
 /**
@@ -65,7 +65,9 @@ public class ErrorsWhileCopyingHandlerActivity  extends AppCompatActivity
         implements OnClickListener {
 
     private static final String TAG = ErrorsWhileCopyingHandlerActivity.class.getSimpleName();
-    
+
+    private static final String SCREEN_NAME = "Error while copying";
+
     public static final String EXTRA_ACCOUNT =
             ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_ACCOUNT";
     public static final String EXTRA_LOCAL_PATHS =
@@ -89,8 +91,8 @@ public class ErrorsWhileCopyingHandlerActivity  extends AppCompatActivity
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        
-        /// read extra parameters in intent
+
+                /// read extra parameters in intent
         Intent intent = getIntent();
         mAccount = intent.getParcelableExtra(EXTRA_ACCOUNT);
         mRemotePaths = intent.getStringArrayListExtra(EXTRA_REMOTE_PATHS);
@@ -131,12 +133,17 @@ public class ErrorsWhileCopyingHandlerActivity  extends AppCompatActivity
         cancelBtn.setOnClickListener(this);
         okBtn.setOnClickListener(this);
     }
-    
-    
-    /**
-     * Customized adapter, showing the local files as main text in two-lines list item and the
-     * remote files as the secondary text.
-     */
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
+        /**
+         * Customized adapter, showing the local files as main text in two-lines list item and the
+         * remote files as the secondary text.
+         */
     public class ErrorsWhileCopyingListAdapter extends ArrayAdapter<String> {
         
         ErrorsWhileCopyingListAdapter() {

+ 8 - 3
src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java

@@ -40,6 +40,7 @@ import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.Toast;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
@@ -70,7 +71,9 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
     private SyncBroadcastReceiver mSyncBroadcastReceiver;
 
     private static final String TAG = FolderPickerActivity.class.getSimpleName();
-    
+
+    private static final String SCREEN_NAME = "Choose upload folder";
+
     private static final String TAG_LIST_OF_FOLDERS = "LIST_OF_FOLDERS";
        
     private boolean mSyncInProgress = false;
@@ -83,7 +86,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
     protected void onCreate(Bundle savedInstanceState) {
         Log_OC.d(TAG, "onCreate() start");
 
-        super.onCreate(savedInstanceState); 
+        super.onCreate(savedInstanceState);
 
         setContentView(R.layout.files_folder_picker);
         
@@ -233,7 +236,9 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
     protected void onResume() {
         super.onResume();
         Log_OC.e(TAG, "onResume() start");
-        
+
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+
         // refresh list of files
         refreshListOfFilesFragment(false);
 

+ 10 - 0
src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java

@@ -69,6 +69,10 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
     private static final String SYNCED_FOLDER_PREFERENCES_DIALOG_TAG = "SYNCED_FOLDER_PREFERENCES_DIALOG";
     public static final String PRIORITIZED_FOLDER = "Camera";
 
+    private static final String SCREEN_NAME = "Auto upload";
+
+    private static final String TAG = FolderSyncActivity.class.getSimpleName();
+
     private RecyclerView mRecyclerView;
     private FolderSyncAdapter mAdapter;
     private LinearLayout mProgress;
@@ -93,6 +97,12 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
         setupContent();
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     /**
      * sets up the UI elements and loads all media/synced folders.
      */

+ 13 - 3
src/main/java/com/owncloud/android/ui/activity/GenericExplanationActivity.java

@@ -32,6 +32,7 @@ import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 
 import java.util.ArrayList;
@@ -51,8 +52,11 @@ public class GenericExplanationActivity  extends AppCompatActivity {
             ".EXTRA_LIST_2";
     public static final String MESSAGE = GenericExplanationActivity.class.getCanonicalName() +
             ".MESSAGE";
-    
-    
+
+    private static final String TAG = GenericExplanationActivity.class.getSimpleName();
+
+    private static final String SCREEN_NAME = "Information";
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -80,7 +84,13 @@ public class GenericExplanationActivity  extends AppCompatActivity {
             listView.setVisibility(View.GONE);
         }
     }
-    
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     public class ExplanationListAdapterView extends ArrayAdapter<String> {
         
         ArrayList<String> mList;

+ 9 - 0
src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java

@@ -36,6 +36,7 @@ import android.widget.Button;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.dialog.LoadingDialog;
@@ -61,6 +62,8 @@ public class LogHistoryActivity extends ToolbarActivity {
 
     private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
 
+    private static final String SCREEN_NAME = "Logs";
+
     private String mLogPath = FileStorageUtils.getLogPath();
     private File logDIR = null;
     private String mLogText;
@@ -116,6 +119,12 @@ public class LogHistoryActivity extends ToolbarActivity {
         }
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         boolean retval = true;

+ 8 - 0
src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java

@@ -80,6 +80,8 @@ public class ManageAccountsActivity extends FileActivity
     String mOriginalCurrentAccount;
     private Drawable mTintedCheck;
 
+    private static final String SCREEN_NAME = "Logs";
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -116,6 +118,12 @@ public class ManageAccountsActivity extends FileActivity
         initializeComponentGetters();
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     @Override
     public void onBackPressed() {
         Intent resultIntent = new Intent();

+ 9 - 0
src/main/java/com/owncloud/android/ui/activity/ManageSpaceActivity.java

@@ -32,6 +32,7 @@ import android.widget.Button;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 
@@ -43,6 +44,8 @@ public class ManageSpaceActivity extends AppCompatActivity {
 
     private static final String LIB_FOLDER = "lib";
 
+    private static final String SCREEN_NAME = "Manage space";
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -66,6 +69,12 @@ public class ManageSpaceActivity extends AppCompatActivity {
     }
 
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         boolean retval = true;

+ 10 - 0
src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java

@@ -30,6 +30,7 @@ import android.view.MenuItem;
 import android.view.View;
 import android.widget.TextView;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 
 /**
@@ -37,6 +38,9 @@ import com.owncloud.android.R;
  */
 public class ParticipateActivity extends FileActivity {
 
+    private static final String TAG = ParticipateActivity.class.getSimpleName();
+    private static final String SCREEN_NAME = "Participate";
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -53,6 +57,12 @@ public class ParticipateActivity extends FileActivity {
         setupContent();
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     private void setupContent() {
         TextView betaView = (TextView) findViewById(R.id.participate_beta_text);
         betaView.setMovementMethod(LinkMovementMethod.getInstance());

+ 10 - 3
src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java

@@ -22,10 +22,7 @@
  */
 package com.owncloud.android.ui.activity;
 
-import java.util.Arrays;
-
 import android.content.Intent;
-
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
@@ -41,13 +38,18 @@ import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 
+import java.util.Arrays;
+
 public class PassCodeActivity extends AppCompatActivity {
 
     private static final String TAG = PassCodeActivity.class.getSimpleName();
 
+    private static final String SCREEN_NAME = "Passcode lock";
+
     public final static String ACTION_REQUEST_WITH_RESULT = "ACTION_REQUEST_WITH_RESULT";
     public final static String ACTION_CHECK_WITH_RESULT = "ACTION_CHECK_WITH_RESULT";
     public final static String ACTION_CHECK = "ACTION_CHECK";
@@ -139,6 +141,11 @@ public class PassCodeActivity extends AppCompatActivity {
         setTextListeners();
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
 
     /**
      * Enables or disables the cancel button to allow the user interrupt the ACTION

+ 4 - 0
src/main/java/com/owncloud/android/ui/activity/Preferences.java

@@ -78,6 +78,8 @@ public class Preferences extends PreferenceActivity
     
     private static final String TAG = Preferences.class.getSimpleName();
 
+    private static final String SCREEN_NAME = "Settings";
+
     private static final int ACTION_SELECT_UPLOAD_PATH = 1;
     private static final int ACTION_SELECT_UPLOAD_VIDEO_PATH = 2;
     private static final int ACTION_REQUEST_PASSCODE = 5;
@@ -559,6 +561,8 @@ public class Preferences extends PreferenceActivity
     @Override
     protected void onResume() {
         super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+
         SharedPreferences appPrefs =
                 PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         boolean state = appPrefs.getBoolean(PassCodeActivity.PREFERENCE_SET_PASSCODE, false);

+ 11 - 2
src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -41,6 +41,7 @@ import android.widget.Button;
 import android.widget.Spinner;
 import android.widget.TextView;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.db.PreferenceManager;
 import com.owncloud.android.lib.common.utils.Log_OC;
@@ -72,7 +73,9 @@ public class UploadFilesActivity extends FileActivity implements
     private Account mAccountOnCreation;
     private DialogFragment mCurrentDialog;
     private Menu mOptionsMenu;
-    
+
+    private static final String SCREEN_NAME = "Choose local files to upload";
+
     public static final String EXTRA_CHOSEN_FILES =
             UploadFilesActivity.class.getCanonicalName() + ".EXTRA_CHOSEN_FILES";
 
@@ -294,7 +297,13 @@ public class UploadFilesActivity extends FileActivity implements
                 mOptionsMenu.findItem(R.id.action_select_all).isChecked());
         Log_OC.d(TAG, "onSaveInstanceState() end");
     }
-    
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     /**
      * Pushes a directory to the drop down list
      * @param directory to push

+ 5 - 0
src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java

@@ -39,6 +39,7 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.widget.Toast;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.datamodel.OCFile;
@@ -68,6 +69,8 @@ public class UploadListActivity extends FileActivity implements UploadListFragme
 
     private static final String TAG_UPLOAD_LIST_FRAGMENT = "UPLOAD_LIST_FRAGMENT";
 
+    private static final String SCREEN_NAME = "Uploads";
+
     private UploadMessagesReceiver mUploadMessagesReceiver;
 
     @Override
@@ -116,6 +119,8 @@ public class UploadListActivity extends FileActivity implements UploadListFragme
         Log_OC.v(TAG, "onResume() start");
         super.onResume();
 
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+
         // Listen for upload messages
         mUploadMessagesReceiver = new UploadMessagesReceiver();
         IntentFilter uploadIntentFilter = new IntentFilter();

+ 10 - 0
src/main/java/com/owncloud/android/ui/activity/UploadPathActivity.java

@@ -23,6 +23,7 @@ import android.accounts.Account;
 import android.os.Bundle;
 import android.view.View.OnClickListener;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
@@ -32,6 +33,9 @@ public class UploadPathActivity extends FolderPickerActivity implements FileFrag
 
     public static final String KEY_INSTANT_UPLOAD_PATH = "INSTANT_UPLOAD_PATH";
 
+    private static final String SCREEN_NAME = "Set upload path";
+
+    private static final String TAG = FolderPickerActivity.class.getSimpleName();
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -45,6 +49,12 @@ public class UploadPathActivity extends FolderPickerActivity implements FileFrag
         setFile(folder);
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     /**
      * Called when the ownCloud {@link Account} associated to the Activity was
      * just updated.

+ 10 - 0
src/main/java/com/owncloud/android/ui/activity/WhatsNewActivity.java

@@ -57,6 +57,10 @@ public class WhatsNewActivity extends FragmentActivity implements ViewPager.OnPa
 
     private static final String KEY_LAST_SEEN_VERSION_CODE = "lastSeenVersionCode";
 
+    private static final String SCREEN_NAME = "What's new";
+
+    private static final String TAG = WhatsNewActivity.class.getSimpleName();
+
     private ImageButton mForwardFinishButton;
     private Button mSkipButton;
     private ProgressIndicator mProgress;
@@ -114,6 +118,12 @@ public class WhatsNewActivity extends FragmentActivity implements ViewPager.OnPa
         updateNextButtonIfNeeded();
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MainApp.getFirebaseAnalyticsInstance().setCurrentScreen(this, SCREEN_NAME, TAG);
+    }
+
     @Override
     public void onBackPressed() {
         onFinish();

+ 8 - 0
src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java

@@ -51,6 +51,8 @@ public class EditShareFragment extends Fragment {
     private static final String ARG_FILE = "FILE";
     private static final String ARG_ACCOUNT = "ACCOUNT";
 
+    private static final String SCREEN_NAME = "Share with Sharee";
+
     /** Ids of CheckBoxes depending on R.id.canEdit CheckBox */
     private static final int sSubordinateCheckBoxIds[] = {
             R.id.canEditCreateCheckBox,
@@ -374,6 +376,12 @@ public class EditShareFragment extends Fragment {
     }
 
 
+    @Override
+    public void onResume() {
+        super.onResume();
+
+    }
+
     /**
      * Get {@link OCShare} instance from DB and updates the UI.
      *

+ 1 - 0
src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -74,6 +74,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
     private static final String ARG_FILE = "FILE";
     private static final String ARG_ACCOUNT = "ACCOUNT";
 
+    private static final String SCREEN_NAME = "File details";
 
     /**
      * Public factory method to create new FileDetailFragment instances.

+ 2 - 0
src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java

@@ -56,6 +56,8 @@ public class LocalFileListFragment extends ExtendedListFragment {
     /** Adapter to connect the data from the directory with the View object */
     private LocalFileListAdapter mAdapter = null;
 
+    private static final String SCREEN_NAME = "Local file browser";
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

+ 2 - 0
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -98,6 +98,8 @@ public class OCFileListFragment extends ExtendedListFragment implements Extended
 
     private static final String DIALOG_CREATE_FOLDER = "DIALOG_CREATE_FOLDER";
 
+    private static final String SCREEN_NAME = "Remote/Server file browser";
+
     private FileFragment.ContainerActivity mContainerActivity;
 
     private OCFile mFile = null;

+ 2 - 0
src/main/java/com/owncloud/android/ui/fragment/SearchShareesFragment.java

@@ -63,6 +63,8 @@ public class SearchShareesFragment extends Fragment implements ShareUserListAdap
     private static final String ARG_FILE = "FILE";
     private static final String ARG_ACCOUNT = "ACCOUNT";
 
+    private static final String SCREEN_NAME = "Sharee search";
+
     // Parameters
     private OCFile mFile;
     private Account mAccount;

+ 2 - 0
src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java

@@ -86,6 +86,8 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
     private static final String ARG_FILE = "FILE";
     private static final String ARG_ACCOUNT = "ACCOUNT";
 
+    private static final String SCREEN_NAME = "Share file/folder";
+
 //    /** Tag for dialog */
 //    private static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG";
 

+ 2 - 0
src/main/java/com/owncloud/android/ui/fragment/UploadListFragment.java

@@ -39,6 +39,8 @@ import com.owncloud.android.ui.adapter.ExpandableUploadListAdapter;
 public class UploadListFragment extends ExpandableListFragment {
     private static final String TAG = UploadListFragment.class.getSimpleName();
 
+    private static final String SCREEN_NAME = "Uploads";
+
     /**
      * Reference to the Activity which this fragment is attached to.
      * For callbacks.

+ 3 - 0
src/main/res/values/setup.xml

@@ -99,6 +99,9 @@
     <!-- login data links -->
     <string name="login_data_own_scheme" translatable="false">cloud</string>
 
+    <!-- analytics enabled -->
+    <bool name="analytics_enabled">false</bool>
+
 </resources>