diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index f24c735e95..5df6d9f0a3 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -129,8 +129,11 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc finish(); startActivity(getIntent()); } else if (!this.getClass().equals(ActivityMain.class) && Helper.shouldAuthenticate(this)) { + Intent intent = getIntent(); finish(); - startActivity(new Intent(this, ActivityMain.class)); + startActivity( + new Intent(this, ActivityMain.class) + .putExtra("intent", intent)); } super.onResume(); diff --git a/app/src/main/java/eu/faircode/email/ActivityMain.java b/app/src/main/java/eu/faircode/email/ActivityMain.java index c468502100..5353903f3c 100644 --- a/app/src/main/java/eu/faircode/email/ActivityMain.java +++ b/app/src/main/java/eu/faircode/email/ActivityMain.java @@ -83,7 +83,10 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack @Override protected void onExecuted(Bundle args, Boolean hasAccounts) { if (hasAccounts) { - Intent view = new Intent(ActivityMain.this, ActivityView.class); + Log.logBundle(args); + Intent view = args.containsKey("intent") + ? args.getParcelable("intent") + : new Intent(ActivityMain.this, ActivityView.class); if (ACTION_REFRESH.equals(getIntent().getAction())) view.putExtra("refresh", true); startActivity(view); @@ -105,7 +108,11 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack new Runnable() { @Override public void run() { - start.execute(ActivityMain.this, new Bundle(), "main:accounts"); + Intent intent = getIntent(); + Bundle args = new Bundle(); + if (intent.hasExtra("intent")) + args.putParcelable("intent", intent.getParcelableExtra("intent")); + start.execute(ActivityMain.this, args, "main:accounts"); } }, new Runnable() { diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 123ec337be..14b14c22a4 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -438,7 +438,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB if (savedInstanceState != null) drawerToggle.setDrawerIndicatorEnabled(savedInstanceState.getBoolean("fair:toggle")); - checkIntent(); checkFirst(); checkCrash(); @@ -471,62 +470,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB fragmentTransaction.commit(); } - private void checkIntent() { - Intent intent = getIntent(); - - if (intent.getBooleanExtra("refresh", false)) { - intent.removeExtra("refresh"); - setIntent(intent); - ServiceSynchronize.process(this, true); - } - - String action = intent.getAction(); - Log.i("View intent=" + intent + " action=" + action); - if (action != null) { - intent.setAction(null); - setIntent(intent); - - if ("unified".equals(action)) { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) - getSupportFragmentManager().popBackStack("unified", 0); - - } else if ("why".equals(action)) { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) - getSupportFragmentManager().popBackStack("unified", 0); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityView.this); - boolean why = prefs.getBoolean("why", false); - if (!why || BuildConfig.DEBUG) { - prefs.edit().putBoolean("why", true).apply(); - Helper.viewFAQ(this, 2); - } - - } else if ("outbox".equals(action)) - onMenuOutbox(); - - else if (action.startsWith("thread")) { - intent.putExtra("thread", action.split(":", 2)[1]); - onViewThread(intent); - - } else if (action.equals("widget")) - onViewThread(intent); - } - - if (intent.hasExtra(Intent.EXTRA_PROCESS_TEXT)) { - CharSequence csearch = getIntent().getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT); - String search = (csearch == null ? null : csearch.toString()); - if (!TextUtils.isEmpty(search)) { - searching = true; - FragmentMessages.search( - ActivityView.this, ActivityView.this, getSupportFragmentManager(), - -1, false, search); - } - - intent.removeExtra(Intent.EXTRA_PROCESS_TEXT); - setIntent(intent); - } - } - @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean("fair:toggle", drawerToggle.isDrawerIndicatorEnabled()); @@ -544,7 +487,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); - checkIntent(); } @Override @@ -565,6 +507,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB lbm.registerReceiver(receiver, iff); checkUpdate(false); + checkIntent(); } @Override @@ -811,6 +754,62 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB }.execute(this, args, "update:check"); } + private void checkIntent() { + Intent intent = getIntent(); + + if (intent.getBooleanExtra("refresh", false)) { + intent.removeExtra("refresh"); + setIntent(intent); + ServiceSynchronize.process(this, true); + } + + String action = intent.getAction(); + Log.i("View intent=" + intent + " action=" + action); + if (action != null) { + intent.setAction(null); + setIntent(intent); + + if ("unified".equals(action)) { + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + getSupportFragmentManager().popBackStack("unified", 0); + + } else if ("why".equals(action)) { + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + getSupportFragmentManager().popBackStack("unified", 0); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityView.this); + boolean why = prefs.getBoolean("why", false); + if (!why || BuildConfig.DEBUG) { + prefs.edit().putBoolean("why", true).apply(); + Helper.viewFAQ(this, 2); + } + + } else if ("outbox".equals(action)) + onMenuOutbox(); + + else if (action.startsWith("thread")) { + intent.putExtra("thread", action.split(":", 2)[1]); + onViewThread(intent); + + } else if (action.equals("widget")) + onViewThread(intent); + } + + if (intent.hasExtra(Intent.EXTRA_PROCESS_TEXT)) { + CharSequence csearch = getIntent().getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT); + String search = (csearch == null ? null : csearch.toString()); + if (!TextUtils.isEmpty(search)) { + searching = true; + FragmentMessages.search( + ActivityView.this, ActivityView.this, getSupportFragmentManager(), + -1, false, search); + } + + intent.removeExtra(Intent.EXTRA_PROCESS_TEXT); + setIntent(intent); + } + } + private Intent getIntentOtherApps() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(Helper.isPlayStoreInstall()