From fba218594b8d97a68a0f7ed75b6d0cf9e3bd6dc3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 10 Jul 2018 20:23:43 +0300 Subject: various sync/preferences fixes remove deprecated GET_ACCOUNT stuff --- .../java/org/fox/ttcomics2/CommonActivity.java | 75 +++++++++++---------- .../main/java/org/fox/ttcomics2/MainActivity.java | 22 +----- .../org/fox/ttcomics2/PreferencesActivity.java | 7 +- .../org/fox/ttcomics2/PreferencesFragment.java | 78 ++++++++-------------- .../org/fox/ttcomics2/sync/SyncFolderService.java | 5 +- 5 files changed, 75 insertions(+), 112 deletions(-) mode change 100644 => 100755 org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java mode change 100644 => 100755 org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java (limited to 'org.fox.ttcomics/src/main/java/org') diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java index 2a867ae..7db1753 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java @@ -1,18 +1,17 @@ package org.fox.ttcomics2; -import android.accounts.Account; import android.accounts.AccountManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.MenuItem; import android.view.View; -import android.widget.Toast; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; @@ -35,6 +34,7 @@ public class CommonActivity extends AppCompatActivity { protected final static int REQUEST_SHARE = 1; protected static final int REQUEST_VIEWCOMIC = 2; protected static final int REQUEST_PERMISSIONS_RESULT = 3; + protected static final int REQUEST_SYNC_ACCOUNT = 4; public static final String PRIVACY_POLICY_URL = "https://tt-rss.org/gitlab/fox/tt-comics/wikis/PrivacyPolicy"; @@ -81,27 +81,24 @@ public class CommonActivity extends AppCompatActivity { } protected void initSyncClient() { - Log.d(TAG, "initSynClient"); + Log.d(TAG, "initSyncClient"); if (isSyncEnabled()) { - String googleAccount = getGoogleAccount(this); + String syncAccount = getSyncAccount(this); - if (googleAccount != null) { - m_syncClient.setOwner(googleAccount); + Log.d(TAG, "sync account=" + syncAccount); + + if (syncAccount != null) { + m_syncClient.setOwner(syncAccount); } else { if (BuildConfig.DEBUG) { m_syncClient.setOwner("TEST-ACCOUNT"); - - //toast(R.string.sync_running_in_test_mode); } else { m_syncClient.setOwner(null); - toast(R.string.error_sync_no_account); - - SharedPreferences.Editor editor = m_prefs.edit(); - editor.putBoolean("use_position_sync", false); - editor.apply(); } + + toast(R.string.error_sync_no_account); } } else { @@ -109,6 +106,21 @@ public class CommonActivity extends AppCompatActivity { } } + @Override + protected void onActivityResult(final int requestCode, final int resultCode, + final Intent data) { + + Log.d(TAG, "RQ=" + requestCode); + + if (requestCode == REQUEST_SYNC_ACCOUNT && resultCode == RESULT_OK) { + String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); + + SharedPreferences.Editor editor = m_prefs.edit(); + editor.putString("sync_account", accountName); + editor.apply(); + } + } + public void onComicArchiveSelected(String fileName) { // } @@ -117,7 +129,8 @@ public class CommonActivity extends AppCompatActivity { public void onComicSelected(String fileName, int position) { m_databaseHelper.setLastPosition(fileName, position); } - + + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_settings: @@ -182,34 +195,24 @@ public class CommonActivity extends AppCompatActivity { return file.getAbsolutePath(); } - public static String getGoogleAccount(Context ctx) { - AccountManager manager = (AccountManager) ctx.getSystemService(ACCOUNT_SERVICE); - Account[] list = manager.getAccounts(); - - for (Account account: list) { - if (account.type.equalsIgnoreCase("com.google")) { - return account.name; - } - } - return null; + public static String getSyncAccount(Context ctx) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); + return prefs.getString("sync_account", null); } public void toast(int msgId) { - try { - Toast toast = Toast.makeText(CommonActivity.this, msgId, Toast.LENGTH_SHORT); - toast.show(); - } catch (RuntimeException e) { - // might happen if UI lags - } + toast(getString(msgId)); } public void toast(String msg) { - try { - Toast toast = Toast.makeText(CommonActivity.this, msg, Toast.LENGTH_SHORT); - toast.show(); - } catch (RuntimeException e) { - // might happen if UI lags - } + Snackbar.make(findViewById(android.R.id.content), msg, Snackbar.LENGTH_LONG) + .setAction(R.string.dialog_close, new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }) + .show(); } public void cleanupCache() { diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java index cc1f3c2..6a19b63 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java @@ -144,15 +144,7 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On } } - String[] permissions; - - if (isSyncEnabled()) { - permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.GET_ACCOUNTS}; - } else { - permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}; - } - - String[] needPermissions = checkPermissions(permissions); + String[] needPermissions = checkPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}); if (needPermissions.length > 0) { ActivityCompat.requestPermissions(this, @@ -201,18 +193,6 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On toast(R.string.permission_denied_storage); } } - - if (Manifest.permission.GET_ACCOUNTS.equals(permission)) { - if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { - needRestart = true; - } else { - toast(R.string.permission_denied_accounts); - - SharedPreferences.Editor editor = m_prefs.edit(); - editor.putBoolean("use_position_sync", false); - editor.apply(); - } - } } if (needRestart) { diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java index 376e639..245ad2c 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java @@ -19,7 +19,7 @@ public class PreferencesActivity extends CommonActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preferences); - setSupportActionBar((Toolbar) findViewById(R.id.toolbar));; + setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); @@ -43,6 +43,8 @@ public class PreferencesActivity extends CommonActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + Log.d("123", "RQ2=" + requestCode); + if(requestCode == DirectoryPicker.PICK_DIRECTORY && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); String path = (String) extras.get(DirectoryPicker.CHOSEN_DIRECTORY); @@ -53,8 +55,9 @@ public class PreferencesActivity extends CommonActivity { SharedPreferences.Editor editor = prefs.edit(); editor.putString("comics_directory", path); editor.apply(); - } + + super.onActivityResult(requestCode, resultCode, data); } public void startPicker() { 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 old mode 100644 new mode 100755 index 9ae89c7..457e503 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java @@ -1,14 +1,10 @@ package org.fox.ttcomics2; -import android.accounts.Account; -import android.accounts.AccountManager; import android.app.Activity; import android.app.AlertDialog; -import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.Uri; @@ -16,15 +12,14 @@ import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; -import android.widget.Toast; + +import com.google.android.gms.auth.GoogleAuthUtil; +import com.google.android.gms.common.AccountPicker; import org.fox.ttcomics2.sync.SyncClient; -import java.io.IOException; import java.text.SimpleDateFormat; -import java.util.Locale; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; +import java.util.Date; public class PreferencesFragment extends PreferenceFragment { @@ -52,19 +47,11 @@ public class PreferencesFragment extends PreferenceFragment { version = packageInfo.versionName; versionCode = packageInfo.versionCode; - ApplicationInfo appInfo = activity.getPackageManager(). - getApplicationInfo(activity.getPackageName(), 0); - - ZipFile zf = new ZipFile(appInfo.sourceDir); - ZipEntry ze = zf.getEntry("classes.dex"); - long time = ze.getTime(); - - buildTimestamp = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", - Locale.getDefault()).format(time); - - findPreference("version").setSummary(getString(R.string.prefs_version, version, versionCode)); + + buildTimestamp = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(new Date(BuildConfig.TIMESTAMP)); findPreference("build_timestamp").setSummary(getString(R.string.prefs_build_timestamp, buildTimestamp)); + findPreference("privacy_policy").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { @@ -77,15 +64,12 @@ public class PreferencesFragment extends PreferenceFragment { } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); } final SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getActivity().getApplicationContext()); - Preference dirPref = findPreference("comics_directory"); - dirPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + findPreference("comics_directory").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { ((PreferencesActivity)getActivity()).startPicker(); @@ -93,8 +77,21 @@ public class PreferencesFragment extends PreferenceFragment { } }); - Preference clearPref = findPreference("clear_sync_data"); - clearPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + 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); + + getActivity().startActivityForResult(googlePicker, CommonActivity.REQUEST_SYNC_ACCOUNT); + + return true; + } + }); + + findPreference("choose_sync_account").setSummary(prefs.getString("sync_account", getString(R.string.sync_account_not_set))); + + findPreference("clear_sync_data").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); @@ -103,26 +100,16 @@ public class PreferencesFragment extends PreferenceFragment { .setPositiveButton(R.string.dialog_clear_data, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - String googleAccount = getGoogleAccount(); + String syncAccount = CommonActivity.getSyncAccount(getActivity().getApplicationContext()); SyncClient m_syncClient = new SyncClient(); - if (googleAccount != null) { - m_syncClient.setOwner(googleAccount); + if (syncAccount != null) { + m_syncClient.setOwner(syncAccount); } else { if (BuildConfig.DEBUG) { m_syncClient.setOwner("TEST-ACCOUNT"); - - //Toast toast = Toast.makeText(getActivity(), R.string.sync_running_in_test_mode, Toast.LENGTH_SHORT); - //toast.show(); } else { - m_syncClient.setOwner(null); - - SharedPreferences.Editor editor = prefs.edit(); - editor.putBoolean("use_position_sync", false); - editor.apply(); - - Toast toast = Toast.makeText(getActivity(), R.string.error_sync_no_account, Toast.LENGTH_SHORT); - toast.show(); + ((CommonActivity)getActivity()).toast(R.string.error_sync_no_account); } } @@ -144,15 +131,4 @@ public class PreferencesFragment extends PreferenceFragment { }); } - public String getGoogleAccount() { - AccountManager manager = (AccountManager) getActivity().getSystemService(Context.ACCOUNT_SERVICE); - Account[] list = manager.getAccounts(); - - for (Account account: list) { - if (account.type.equalsIgnoreCase("com.google")) { - return account.name; - } - } - return null; - } } \ No newline at end of file diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java old mode 100644 new mode 100755 index a048342..75120d3 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java @@ -1,5 +1,6 @@ package org.fox.ttcomics2.sync; +import android.annotation.SuppressLint; import android.app.Service; import android.content.Intent; import android.os.AsyncTask; @@ -46,7 +47,7 @@ public class SyncFolderService extends Service { public void onStart(Intent intent, int startId) { String baseDir = intent.getExtras().getString("baseDir"); - AsyncTask task = new AsyncTask() { + @SuppressLint("StaticFieldLeak") AsyncTask task = new AsyncTask() { @Override protected Integer doInBackground(String... params) { File rootDir = new File(params[0]); @@ -63,7 +64,7 @@ public class SyncFolderService extends Service { SyncClient m_syncClient = new SyncClient(); - String googleAccount = CommonActivity.getGoogleAccount(getApplicationContext()); + String googleAccount = CommonActivity.getSyncAccount(getApplicationContext()); if (googleAccount != null) { m_syncClient.setOwner(googleAccount); -- cgit v1.2.3