diff options
Diffstat (limited to 'org.fox.ttcomics/src/main/java')
5 files changed, 75 insertions, 112 deletions
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 index 9ae89c7..457e503 100644..100755 --- 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 index a048342..75120d3 100644..100755 --- 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<String, Integer, Integer> task = new AsyncTask<String, Integer, Integer>() {
+ @SuppressLint("StaticFieldLeak") AsyncTask<String, Integer, Integer> task = new AsyncTask<String, Integer, Integer>() {
@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);
|