From 06132e6709132d1471ed8f9d2a64cfbe864e83c9 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 19 Apr 2020 17:41:58 +0300 Subject: make GMS account picking optional (if available) --- org.fox.ttcomics/org.fox.ttcomics.iml | 41 ++++++++------- org.fox.ttcomics/src/main/AndroidManifest.xml | 4 +- .../org/fox/ttcomics2/PreferencesFragment.java | 61 ++++++++++++++++++++-- org.fox.ttcomics/src/main/res/values/strings.xml | 2 + 4 files changed, 84 insertions(+), 24 deletions(-) (limited to 'org.fox.ttcomics') diff --git a/org.fox.ttcomics/org.fox.ttcomics.iml b/org.fox.ttcomics/org.fox.ttcomics.iml index 5475ceb..e7a0aca 100644 --- a/org.fox.ttcomics/org.fox.ttcomics.iml +++ b/org.fox.ttcomics/org.fox.ttcomics.iml @@ -91,10 +91,10 @@ - - - - + + + + @@ -108,44 +108,47 @@ - - - - - - - + + + + + - - - + + + + + - - - + + + + + - - + + + diff --git a/org.fox.ttcomics/src/main/AndroidManifest.xml b/org.fox.ttcomics/src/main/AndroidManifest.xml index c0af6ff..6e638ef 100644 --- a/org.fox.ttcomics/src/main/AndroidManifest.xml +++ b/org.fox.ttcomics/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="94" + android:versionName="1.52" > diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java index e16871f..e8697a7 100644 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java @@ -2,6 +2,7 @@ package org.fox.ttcomics2; import android.app.Activity; import android.app.AlertDialog; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; @@ -12,9 +13,15 @@ import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; +import android.text.InputType; +import android.text.TextUtils; +import android.util.Patterns; +import android.widget.EditText; import com.google.android.gms.auth.GoogleAuthUtil; import com.google.android.gms.common.AccountPicker; +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.GoogleApiAvailability; import org.fox.ttcomics2.sync.SyncClient; @@ -22,6 +29,7 @@ import java.text.SimpleDateFormat; import java.util.Date; public class PreferencesFragment extends PreferenceFragment { + private final String TAG = this.getClass().getSimpleName(); @Override public void onCreate(Bundle savedInstanceState) { @@ -31,6 +39,16 @@ public class PreferencesFragment extends PreferenceFragment { } + public boolean isGMSAvailable(Context context){ + GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance(); + int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(context); + return resultCode == ConnectionResult.SUCCESS; + } + + public static boolean isValidEmail(CharSequence target) { + return (!TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches()); + } + public void onResume() { super.onResume(); @@ -91,10 +109,47 @@ public class PreferencesFragment extends PreferenceFragment { findPreference("choose_sync_account").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - Intent googlePicker = AccountPicker.newChooseAccountIntent(null, null, - new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null); + if (!isGMSAvailable(getActivity())) { + Intent googlePicker = AccountPicker.newChooseAccountIntent(null, null, + new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null); + + getActivity().startActivityForResult(googlePicker, CommonActivity.REQUEST_SYNC_ACCOUNT); + } else { + final EditText input = new EditText(getActivity()); + input.setText(prefs.getString("sync_account", "")); + input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setMessage(getString(R.string.dialog_set_sync_account_manually)) + .setView(input) + .setCancelable(true) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + String account = input.getText().toString().trim(); + + if (isValidEmail(account)) { + dialog.dismiss(); + + SharedPreferences.Editor editor = prefs.edit(); + editor.putString("sync_account", account); + editor.apply(); + + findPreference("choose_sync_account").setSummary(account); + + } else { + ((PreferencesActivity)getActivity()).toast(R.string.dialog_invalid_sync_account_syntax); + } + } + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + dialog.cancel(); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + } - getActivity().startActivityForResult(googlePicker, CommonActivity.REQUEST_SYNC_ACCOUNT); return true; } diff --git a/org.fox.ttcomics/src/main/res/values/strings.xml b/org.fox.ttcomics/src/main/res/values/strings.xml index 51f6d04..3ef6d79 100644 --- a/org.fox.ttcomics/src/main/res/values/strings.xml +++ b/org.fox.ttcomics/src/main/res/values/strings.xml @@ -83,4 +83,6 @@ Enable FAB Show floating action button Choose sync account + Set sync account + Invalid account (email expected) \ No newline at end of file -- cgit v1.2.3