Skip to content

Commit 2472d14

Browse files
authored
Merge pull request #91 from kaczmarkiewiczp/crash-reporting
Add option to disable anonymous crash reports
2 parents d9143fa + 67fea5c commit 2472d14

File tree

5 files changed

+94
-12
lines changed

5 files changed

+94
-12
lines changed

app/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
android:resource="@drawable/ic_notification" />
1212
<meta-data android:name="com.google.firebase.messaging.default_notification_color"
1313
android:resource="@color/white" />
14+
<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />
1415

1516
<application
1617
android:allowBackup="true"

app/src/main/java/ca/pkay/rcloneexplorer/MainActivity.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import ca.pkay.rcloneexplorer.Fragments.RemotesFragment;
5656
import ca.pkay.rcloneexplorer.Items.RemoteItem;
5757
import es.dmoral.toasty.Toasty;
58+
import io.fabric.sdk.android.Fabric;
5859

5960
public class MainActivity extends AppCompatActivity
6061
implements NavigationView.OnNavigationItemSelectedListener,
@@ -78,13 +79,18 @@ public class MainActivity extends AppCompatActivity
7879
@Override
7980
protected void onCreate(Bundle savedInstanceState) {
8081
super.onCreate(savedInstanceState);
82+
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
83+
boolean enableCrashReports = sharedPreferences.getBoolean(getString(R.string.pref_key_crash_reports), true);
84+
if (enableCrashReports) {
85+
Fabric.with(this, new Crashlytics());
86+
}
87+
8188
applyTheme();
8289
context = this;
8390
setContentView(R.layout.activity_main);
8491
Toolbar toolbar = findViewById(R.id.toolbar);
8592
setSupportActionBar(toolbar);
8693

87-
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
8894

8995
DrawerLayout drawer = findViewById(R.id.drawer_layout);
9096
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(

app/src/main/java/ca/pkay/rcloneexplorer/SettingsActivity.java

+43-10
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
import android.widget.ImageView;
1717
import android.widget.Switch;
1818
import android.widget.TextView;
19+
import android.widget.Toast;
1920

2021
import com.google.firebase.messaging.FirebaseMessaging;
2122

2223
import ca.pkay.rcloneexplorer.Dialogs.ColorPickerDialog;
24+
import es.dmoral.toasty.Toasty;
2325

2426
public class SettingsActivity extends AppCompatActivity {
2527

@@ -36,6 +38,8 @@ public class SettingsActivity extends AppCompatActivity {
3638
private Switch useLogsSwitch;
3739
private View useLogsElement;
3840
private Switch appUpdatesSwitch;
41+
private View crashReportsElement;
42+
private Switch crashReportsSwitch;
3943
private boolean isDarkTheme;
4044
private boolean themeHasChanged;
4145

@@ -105,17 +109,21 @@ private void getViews() {
105109
appUpdatesSwitch = findViewById(R.id.app_updates_switch);
106110
useLogsSwitch = findViewById(R.id.use_logs_switch);
107111
useLogsElement = findViewById(R.id.use_logs);
112+
crashReportsElement = findViewById(R.id.crash_reporting);
113+
crashReportsSwitch = findViewById(R.id.crash_reporting_switch);
108114
}
109115

110116
private void setDefaultStates() {
111117
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
112118
boolean isDarkTheme = sharedPreferences.getBoolean(getString(R.string.pref_key_dark_theme), false);
113119
boolean useLogs = sharedPreferences.getBoolean(getString(R.string.pref_key_logs), false);
114120
boolean appUpdates = sharedPreferences.getBoolean(getString(R.string.pref_key_app_updates), true);
121+
boolean crashReports = sharedPreferences.getBoolean(getString(R.string.pref_key_crash_reports), true);
115122

116123
darkThemeSwitch.setChecked(isDarkTheme);
117124
useLogsSwitch.setChecked(useLogs);
118125
appUpdatesSwitch.setChecked(appUpdates);
126+
crashReportsSwitch.setChecked(crashReports);
119127
}
120128

121129
private void setClickListeners() {
@@ -147,16 +155,6 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
147155
onDarkThemeClicked(isChecked);
148156
}
149157
});
150-
useLogsElement.setOnClickListener(new View.OnClickListener() {
151-
@Override
152-
public void onClick(View v) {
153-
if (useLogsSwitch.isChecked()) {
154-
useLogsSwitch.setChecked(false);
155-
} else {
156-
useLogsSwitch.setChecked(true);
157-
}
158-
}
159-
});
160158
notificationsElement.setOnClickListener(new View.OnClickListener() {
161159
@Override
162160
public void onClick(View v) {
@@ -179,12 +177,38 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
179177
onAppUpdatesClicked(isChecked);
180178
}
181179
});
180+
useLogsElement.setOnClickListener(new View.OnClickListener() {
181+
@Override
182+
public void onClick(View v) {
183+
if (useLogsSwitch.isChecked()) {
184+
useLogsSwitch.setChecked(false);
185+
} else {
186+
useLogsSwitch.setChecked(true);
187+
}
188+
}
189+
});
182190
useLogsSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
183191
@Override
184192
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
185193
onUseLogsClicked(isChecked);
186194
}
187195
});
196+
crashReportsElement.setOnClickListener(new View.OnClickListener() {
197+
@Override
198+
public void onClick(View v) {
199+
if (crashReportsSwitch.isChecked()) {
200+
crashReportsSwitch.setChecked(false);
201+
} else {
202+
crashReportsSwitch.setChecked(true);
203+
}
204+
}
205+
});
206+
crashReportsSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
207+
@Override
208+
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
209+
crashReportsClicked(isChecked);
210+
}
211+
});
188212
}
189213

190214
private void showPrimaryColorPicker() {
@@ -294,4 +318,13 @@ private void onUseLogsClicked(boolean isChecked) {
294318
editor.putBoolean(getString(R.string.pref_key_logs), isChecked);
295319
editor.apply();
296320
}
321+
322+
private void crashReportsClicked(boolean isChecked) {
323+
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
324+
SharedPreferences.Editor editor = sharedPreferences.edit();
325+
editor.putBoolean(getString(R.string.pref_key_crash_reports), isChecked);
326+
editor.apply();
327+
328+
Toasty.info(this, getString(R.string.restart_required), Toast.LENGTH_SHORT, true).show();
329+
}
297330
}

app/src/main/res/layout/content_settings.xml

+39
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,45 @@
318318

319319
</RelativeLayout>
320320

321+
<RelativeLayout
322+
android:id="@+id/crash_reporting"
323+
android:layout_width="match_parent"
324+
android:layout_height="wrap_content"
325+
android:paddingStart="16dp"
326+
android:paddingEnd="16dp"
327+
android:paddingTop="24dp"
328+
android:paddingBottom="24dp"
329+
android:clickable="true"
330+
android:focusable="true"
331+
android:background="?selectableItemBackground" >
332+
333+
<ImageView
334+
android:id="@+id/crash_reporting_icon"
335+
android:layout_width="24dp"
336+
android:layout_height="24dp"
337+
android:layout_centerVertical="true"
338+
android:tint="?attr/iconTint"
339+
android:src="@drawable/ic_bug_report"
340+
android:contentDescription="@string/crash_reporting_icon_content_description" />
341+
342+
<TextView
343+
android:layout_width="wrap_content"
344+
android:layout_height="wrap_content"
345+
android:paddingStart="32dp"
346+
android:paddingEnd="0dp"
347+
android:layout_toEndOf="@id/crash_reporting_icon"
348+
android:textColor="?attr/textColorPrimary"
349+
android:textStyle="bold"
350+
android:text="@string/send_anonymous_crash_reports"/>
351+
352+
<Switch
353+
android:id="@+id/crash_reporting_switch"
354+
android:layout_width="wrap_content"
355+
android:layout_height="wrap_content"
356+
android:layout_alignParentEnd="true" />
357+
358+
</RelativeLayout>
359+
321360
<View
322361
android:layout_width="match_parent"
323362
android:layout_height="1dp"

app/src/main/res/values/strings.xml

+4-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
<string name="pref_primary_color_title">Primary Color</string>
129129
<string name="pref_accent_color_title">Accent Color</string>
130130
<string name="pref_header_look_and_feel">Look and Feel</string>
131-
<string name="restart_required">App restart may be required</string>
131+
<string name="restart_required">App restart is required</string>
132132
<string name="select_primary_color">Select a primary color</string>
133133
<string name="select_accent_color">Select an accent color</string>
134134
<string name="title_activity_about_libs">AboutLibsActivity</string>
@@ -142,6 +142,7 @@
142142
<string name="pref_key_color_accent">pref_key_color_accent</string>
143143
<string name="pref_key_dark_theme">pref_key_dark_theme</string>
144144
<string name="pref_key_app_updates">pref_key_app_updates</string>
145+
<string name="pref_key_crash_reports">pref_key_crash_reports</string>
145146
<string name="pref_key_version_code">pref_key_version_code</string>
146147
<string name="look_and_feel">Look and Feel</string>
147148
<string name="primary_color_content_desc">Primary color</string>
@@ -293,4 +294,6 @@
293294
<string name="selected_cache_expiry">Cache expiry time: %1$s</string>
294295
<string name="cache_size">Cache size</string>
295296
<string name="selected_cache_size">Cache size: %1$s</string>
297+
<string name="crash_reporting_icon_content_description">Crash reporting icon</string>
298+
<string name="send_anonymous_crash_reports">Send anonymous crash reports</string>
296299
</resources>

0 commit comments

Comments
 (0)