Replace PrivacyActivity with snackbar

pull/384/head
Alex Baker 9 years ago
parent e8d61b1916
commit 9d760b429d

@ -16,4 +16,8 @@ public class Tracker {
public void setTrackingEnabled(boolean enabled) {
}
public void reportException(Exception e) {
}
}

@ -4,6 +4,7 @@ import android.content.Context;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.StandardExceptionParser;
import org.tasks.BuildConfig;
import org.tasks.R;
@ -17,11 +18,14 @@ public class Tracker {
private final GoogleAnalytics analytics;
private final com.google.android.gms.analytics.Tracker tracker;
private final StandardExceptionParser exceptionParser;
@Inject
public Tracker(@ForApplication Context context) {
analytics = GoogleAnalytics.getInstance(context);
tracker = analytics.newTracker(R.xml.analytics);
tracker.setAppVersion(Integer.toString(BuildConfig.VERSION_CODE));
exceptionParser = new StandardExceptionParser(context, null);
if (BuildConfig.DEBUG) {
analytics.setDryRun(true);
}
@ -35,4 +39,11 @@ public class Tracker {
public void setTrackingEnabled(boolean enabled) {
analytics.setAppOptOut(!enabled);
}
public void reportException(Exception e) {
tracker.send(new HitBuilders.ExceptionBuilder()
.setDescription(exceptionParser.getDescription(Thread.currentThread().getName(), e))
.setFatal(false)
.build());
}
}

@ -2,5 +2,4 @@
<resources>
<string name="ga_trackingId">UA-43015607-3</string>
<bool name="ga_reportUncaughtExceptions">true</bool>
<integer name="ga_sessionTimeout">300</integer>
</resources>

@ -120,10 +120,6 @@
android:name=".activities.AddAttachmentActivity"
android:theme="@style/TranslucentDialog" />
<activity
android:name=".activities.PrivacyActivity"
android:theme="@style/TranslucentDialog" />
<!-- Activity that displays task list -->
<activity
android:name="com.todoroo.astrid.activity.TaskListActivity"

@ -11,10 +11,14 @@ import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteException;
import android.preference.PreferenceManager;
import android.support.design.widget.Snackbar;
import android.view.View;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.DatabaseUpdateListener;
@ -34,7 +38,9 @@ import org.slf4j.LoggerFactory;
import org.tasks.Broadcaster;
import org.tasks.BuildConfig;
import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.Preferences;
import java.io.File;
@ -65,12 +71,14 @@ public class StartupService {
private final TaskDeleter taskDeleter;
private Broadcaster broadcaster;
private DialogBuilder dialogBuilder;
private Tracker tracker;
@Inject
public StartupService(TagDataDao tagDataDao, Database database, GtasksPreferenceService gtasksPreferenceService,
GtasksSyncService gtasksSyncService, MetadataDao metadataDao,
Preferences preferences, TasksXmlImporter xmlImporter,
TaskDeleter taskDeleter, Broadcaster broadcaster, DialogBuilder dialogBuilder) {
TaskDeleter taskDeleter, Broadcaster broadcaster, DialogBuilder dialogBuilder,
Tracker tracker) {
this.tagDataDao = tagDataDao;
this.database = database;
this.gtasksPreferenceService = gtasksPreferenceService;
@ -81,6 +89,7 @@ public class StartupService {
this.taskDeleter = taskDeleter;
this.broadcaster = broadcaster;
this.dialogBuilder = dialogBuilder;
this.tracker = tracker;
}
/**
@ -142,6 +151,34 @@ public class StartupService {
gtasksPreferenceService.stopOngoing();
gtasksSyncService.initialize();
if (activity.getResources().getBoolean(R.bool.google_play_store_available) &&
!preferences.getBoolean(R.string.p_collect_statistics_notification, false) &&
activity instanceof TaskListActivity) {
preferences.setBoolean(R.string.p_collect_statistics_notification, true);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
View taskList = activity.findViewById(R.id.task_list_body);
String text = activity.getString(R.string.anonymous_usage_blurb);
//noinspection ResourceType
Snackbar.make(taskList, text, 10000)
.setActionTextColor(activity.getResources().getColor(R.color.snackbar_undo))
.setAction(R.string.opt_out, new View.OnClickListener() {
@Override
public void onClick(View v) {
activity.startActivityForResult(new Intent(activity, BasicPreferences.class), FilterAdapter.REQUEST_SETTINGS);
}
})
.show();
} catch (Exception e) {
log.error(e.getMessage(), e);
tracker.reportException(e);
}
}
});
}
}
}).start();

@ -15,7 +15,6 @@ import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.api.AstridApiConstants;
import org.tasks.R;
import org.tasks.activities.PrivacyActivity;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
@ -86,7 +85,5 @@ public class UpgradeActivity extends InjectingAppCompatActivity {
}
}
}
// notify existing users of analytics
startActivity(new Intent(this, PrivacyActivity.class));
}
}

@ -1,46 +0,0 @@
package org.tasks.activities;
import android.content.DialogInterface;
import android.os.Bundle;
import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
public class PrivacyActivity extends InjectingAppCompatActivity {
@Inject DialogBuilder dialogBuilder;
@Inject Tracker tracker;
@Inject Preferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dialogBuilder.newDialog()
.setCancelable(false)
.setTitle(R.string.send_anonymous_statistics)
.setMessage(String.format("%s\n\n%s",
getString(R.string.send_anonymous_statistics_summary),
getString(R.string.change_setting_anytime)))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton(R.string.opt_out, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
preferences.setTrackingEnabled(false);
tracker.setTrackingEnabled(false);
finish();
}
})
.show();
}
}

@ -35,7 +35,6 @@ import org.tasks.activities.ExportTaskActivity;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.ImportTaskActivity;
import org.tasks.activities.LocationPickerActivity;
import org.tasks.activities.PrivacyActivity;
import org.tasks.activities.PurgeDeletedActivity;
import org.tasks.activities.ResetPreferencesActivity;
import org.tasks.activities.SortActivity;
@ -101,8 +100,7 @@ import dagger.Provides;
UpgradeActivity.class,
CalendarSelectionActivity.class,
AddAttachmentActivity.class,
ShortcutActivity.class,
PrivacyActivity.class
ShortcutActivity.class
})
public class ActivityModule {

@ -281,5 +281,6 @@
<string name="default_vibration_duration">1000</string>
<string name="default_vibration_pause">500</string>
<string name="p_collect_statistics">collect_statistics</string>
<string name="p_collect_statistics_notification">collect_statistics_notification</string>
</resources>

@ -136,8 +136,8 @@
<string name="privacy_policy">Privacy policy</string>
<string name="send_anonymous_statistics">Improve Tasks</string>
<string name="send_anonymous_statistics_summary">Send anonymous usage statistics and crash reports to help improve Tasks. No personal data will be collected.</string>
<string name="anonymous_usage_blurb">Anonymous usage statistics are collected</string>
<string name="opt_out">Opt-out</string>
<string name="change_setting_anytime">You can change this setting at any time.</string>
<string-array name="sync_SPr_interval_entries">
<!-- sync_SPr_interval_entries: Synchronization Intervals -->

Loading…
Cancel
Save