From dd98ce43892d6f29f31fadce9e2817f7dd467cd1 Mon Sep 17 00:00:00 2001 From: Dmitriy Bogdanov Date: Wed, 27 Jul 2016 00:47:11 +0400 Subject: [PATCH 1/2] Don't use startActivityForResult on SettingsActivity --- .../activity/MainActivity.java | 35 ++++++++++++------- .../activity/SettingsActivity.java | 35 ++++++++++++------- 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index 968a4dd8..fcaa0006 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -108,8 +108,9 @@ public class MainActivity extends AppCompatActivity static final int INPUT_FILE_REQUEST_CODE = 1; private static final int REQUEST_CODE_ASK_PERMISSIONS = 123; public static final int REQUEST_CODE_ASK_PERMISSIONS_SAVE_IMAGE = 124; - public static final int REQUEST_CODE_SETTINGS = 125; - public static final int RESULT_CODE_CHANGE_ACCOUNT = 130; + + public static final String ACTION_OPEN_URL = "com.github.dfa.diaspora_android.MainActivity.open_url"; + public static final String ACTION_CHANGE_ACCOUNT = "com.github.dfa.diaspora_android.MainActivity.change_account"; public static final String URL_MESSAGE = "URL_MESSAGE"; private App app; @@ -243,6 +244,8 @@ public class MainActivity extends AppCompatActivity snackbarNoInternet.show(); } } + + handleIntent(getIntent()); } private void setupWebView(Bundle savedInstanceState) { @@ -420,18 +423,26 @@ public class MainActivity extends AppCompatActivity ); } + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + + handleIntent(intent); + } + + private void handleIntent(Intent intent) { + String action = intent.getAction(); + if(ACTION_OPEN_URL.equals(action)) { + String url = intent.getStringExtra(URL_MESSAGE); + webView.loadUrl(url); + } else if(ACTION_CHANGE_ACCOUNT.equals(action)) { + app.resetPodData(webView); + Helpers.animateToActivity(MainActivity.this, PodSelectionActivity.class, true); + } + } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - if(requestCode == REQUEST_CODE_SETTINGS) { - if(resultCode == Activity.RESULT_OK) { - String url = data.getStringExtra(URL_MESSAGE); - webView.loadUrl(url); - } else if(resultCode == RESULT_CODE_CHANGE_ACCOUNT) { - app.resetPodData(webView); - Helpers.animateToActivity(MainActivity.this, PodSelectionActivity.class, true); - } - } if (requestCode != INPUT_FILE_REQUEST_CODE || mFilePathCallback == null) { super.onActivityResult(requestCode, resultCode, data); return; @@ -931,7 +942,7 @@ public class MainActivity extends AppCompatActivity break; case R.id.nav_settings_app: { - startActivityForResult(new Intent(this, SettingsActivity.class), REQUEST_CODE_SETTINGS); + startActivity(new Intent(this, SettingsActivity.class)); } break; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java index e3755482..ce282954 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java @@ -1,6 +1,5 @@ package com.github.dfa.diaspora_android.activity; -import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; @@ -31,7 +30,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer sharedPreferences = getPreferenceScreen().getSharedPreferences(); sharedPreferences.registerOnSharedPreferenceChangeListener(this); setPreferenceSummaries(); - setResult(Activity.RESULT_CANCELED); sharedPreferences.edit().putBoolean(AppSettings.PREF.PROXY_WAS_ENABLED, sharedPreferences.getBoolean(AppSettings.PREF.PROXY_ENABLED, false)).apply(); } @@ -65,21 +63,21 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer @Override public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) { - Intent results = new Intent(); + Intent intent = new Intent(this, MainActivity.class); String podDomain = ((App)getApplication()).getSettings().getPodDomain(); switch(preference.getKey()) { case "pref_key_personal_settings": - results.putExtra(MainActivity.URL_MESSAGE, "https://" + podDomain + "/user/edit"); - setResult(Activity.RESULT_OK, results); - finish(); + intent.setAction(MainActivity.ACTION_OPEN_URL); + intent.putExtra(MainActivity.URL_MESSAGE, "https://" + podDomain + "/user/edit"); + break; case "pref_key_manage_tags": - results.putExtra(MainActivity.URL_MESSAGE, "https://" + podDomain + "/tag_followings/manage"); - setResult(Activity.RESULT_OK, results); - finish(); + intent.setAction(MainActivity.ACTION_OPEN_URL); + intent.putExtra(MainActivity.URL_MESSAGE, "https://" + podDomain + "/tag_followings/manage"); + break; case "pref_key_manage_contacts": - results.putExtra(MainActivity.URL_MESSAGE, "https://" + podDomain + "/contacts"); - setResult(Activity.RESULT_OK, results); - finish(); + intent.setAction(MainActivity.ACTION_OPEN_URL); + intent.putExtra(MainActivity.URL_MESSAGE, "https://" + podDomain + "/contacts"); + break; case "pref_key_change_account": new AlertDialog.Builder(SettingsActivity.this) .setTitle(getString(R.string.confirmation)) @@ -88,11 +86,22 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - setResult(MainActivity.RESULT_CODE_CHANGE_ACCOUNT); + Intent intent = new Intent(SettingsActivity.this, MainActivity.class); + intent.setAction(MainActivity.ACTION_CHANGE_ACCOUNT); + startActivity(intent); finish(); } }) .show(); + return true; + default: + intent = null; + break; + } + if(intent != null) { + startActivity(intent); + finish(); + return true; } return super.onPreferenceTreeClick(screen, preference); } From 1fead4286824ab42aa3495c003e3f2b560cd649d Mon Sep 17 00:00:00 2001 From: Dmitriy Bogdanov Date: Wed, 27 Jul 2016 00:52:26 +0400 Subject: [PATCH 2/2] Add an option to clear WebView cache --- .../github/dfa/diaspora_android/activity/MainActivity.java | 3 +++ .../dfa/diaspora_android/activity/SettingsActivity.java | 3 +++ app/src/main/res/values/strings-preferences.xml | 3 +++ app/src/main/res/xml/preferences.xml | 6 ++++++ 4 files changed, 15 insertions(+) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index fcaa0006..43ee7b1a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -111,6 +111,7 @@ public class MainActivity extends AppCompatActivity public static final String ACTION_OPEN_URL = "com.github.dfa.diaspora_android.MainActivity.open_url"; public static final String ACTION_CHANGE_ACCOUNT = "com.github.dfa.diaspora_android.MainActivity.change_account"; + public static final String ACTION_CLEAR_CACHE = "com.github.dfa.diaspora_android.MainActivity.clear_cache"; public static final String URL_MESSAGE = "URL_MESSAGE"; private App app; @@ -438,6 +439,8 @@ public class MainActivity extends AppCompatActivity } else if(ACTION_CHANGE_ACCOUNT.equals(action)) { app.resetPodData(webView); Helpers.animateToActivity(MainActivity.this, PodSelectionActivity.class, true); + } else if(ACTION_CLEAR_CACHE.equals(action)) { + webView.clearCache(true); } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java index ce282954..e8ab5ece 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java @@ -94,6 +94,9 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer }) .show(); return true; + case "pref_key_clear_cache": + intent.setAction(MainActivity.ACTION_CLEAR_CACHE); + break; default: intent = null; break; diff --git a/app/src/main/res/values/strings-preferences.xml b/app/src/main/res/values/strings-preferences.xml index 6f5358a2..1911b85a 100644 --- a/app/src/main/res/values/strings-preferences.xml +++ b/app/src/main/res/values/strings-preferences.xml @@ -46,4 +46,7 @@ Erase local session data and switch to another Diaspora pod/account This will erase all cookies and session data. Do you really want to change your account? + Clear cache + Clear WebView cache + \ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 881e0926..2f4d3d50 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -52,6 +52,12 @@ android:summary="@string/pref_desc_load_images" android:defaultValue="true" /> + + +