From 38fcadab9beab6e238e5a811245e1da4abb0e170 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 14 Mar 2019 14:57:24 +0000 Subject: [PATCH] Android Q compatibility --- .../java/eu/faircode/email/ActivityView.java | 20 +++++++- app/src/main/java/eu/faircode/email/Core.java | 6 +-- .../eu/faircode/email/ServiceSynchronize.java | 8 ++-- .../java/eu/faircode/email/ServiceUI.java | 48 +++---------------- 4 files changed, 31 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 4c76f9ce6c..395d90474d 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -117,7 +117,8 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB private static NumberFormat nf = NumberFormat.getNumberInstance(); static final int REQUEST_UNIFIED = 1; - static final int REQUEST_THREAD = 2; + static final int REQUEST_WHY = 2; + static final int REQUEST_THREAD = 3; static final int REQUEST_RAW = 1; static final int REQUEST_ATTACHMENT = 2; @@ -430,7 +431,22 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB if ("unified".equals(action)) init(); - else if ("error".equals(action)) + else if ("why".equals(action)) { + init(); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityView.this); + boolean why = prefs.getBoolean("why", false); + if (!why) { + prefs.edit().putBoolean("why", true).apply(); + + Intent iwhy = new Intent(Intent.ACTION_VIEW); + iwhy.setData(Uri.parse(Helper.FAQ_URI + "#user-content-faq2")); + iwhy.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + if (iwhy.resolveActivity(getPackageManager()) != null) + startActivity(iwhy); + } + + } else if ("error".equals(action)) onDebugInfo(); else if (action.startsWith("thread")) { diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 30d07d9e19..783a982328 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1519,9 +1519,9 @@ class Core { messageContact.put(message, ContactInfo.get(context, message.from, false)); // Build pending intents - Intent summary = new Intent(context, ServiceUI.class); - summary.setAction("summary"); - PendingIntent piSummary = PendingIntent.getService(context, ServiceUI.PI_SUMMARY, summary, PendingIntent.FLAG_UPDATE_CURRENT); + Intent summary = new Intent(context, ActivityView.class); + summary.setAction("unified"); + PendingIntent piSummary = PendingIntent.getActivity(context, ActivityView.REQUEST_UNIFIED, summary, PendingIntent.FLAG_UPDATE_CURRENT); Intent clear = new Intent(context, ServiceUI.class); clear.setAction("clear"); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 5ad8637f94..ad91a128fa 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -211,9 +211,9 @@ public class ServiceSynchronize extends LifecycleService { lastStats = stats; // Build pending intent - Intent intent = new Intent(this, ServiceUI.class); - intent.setAction("why"); - PendingIntent pi = PendingIntent.getService(this, ServiceUI.PI_WHY, intent, PendingIntent.FLAG_UPDATE_CURRENT); + Intent why = new Intent(this, ActivityView.class); + why.setAction("why"); + PendingIntent piWhy = PendingIntent.getActivity(this, ActivityView.REQUEST_WHY, why, PendingIntent.FLAG_UPDATE_CURRENT); // Build notification NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "service"); @@ -222,7 +222,7 @@ public class ServiceSynchronize extends LifecycleService { .setSmallIcon(R.drawable.baseline_compare_arrows_white_24) .setContentTitle(getResources().getQuantityString( R.plurals.title_notification_synchronizing, lastStats.accounts, lastStats.accounts)) - .setContentIntent(pi) + .setContentIntent(piWhy) .setAutoCancel(false) .setShowWhen(false) .setPriority(NotificationCompat.PRIORITY_MIN) diff --git a/app/src/main/java/eu/faircode/email/ServiceUI.java b/app/src/main/java/eu/faircode/email/ServiceUI.java index 0a25368202..7bf5ed33bf 100644 --- a/app/src/main/java/eu/faircode/email/ServiceUI.java +++ b/app/src/main/java/eu/faircode/email/ServiceUI.java @@ -2,22 +2,16 @@ package eu.faircode.email; import android.app.IntentService; import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.net.Uri; -import android.preference.PreferenceManager; import androidx.annotation.Nullable; public class ServiceUI extends IntentService { - static final int PI_WHY = 1; - static final int PI_SUMMARY = 2; - static final int PI_CLEAR = 3; - static final int PI_SEEN = 4; - static final int PI_ARCHIVE = 5; - static final int PI_TRASH = 6; - static final int PI_IGNORED = 7; - static final int PI_SNOOZED = 8; + static final int PI_CLEAR = 1; + static final int PI_SEEN = 2; + static final int PI_ARCHIVE = 3; + static final int PI_TRASH = 4; + static final int PI_IGNORED = 5; + static final int PI_SNOOZED = 6; public ServiceUI() { this(ServiceUI.class.getName()); @@ -57,12 +51,6 @@ public class ServiceUI extends IntentService { long id = (parts.length > 1 ? Long.parseLong(parts[1]) : -1); switch (parts[0]) { - case "why": - onWhy(); - break; - case "summary": - onSummary(); - break; case "clear": onClear(); break; @@ -90,30 +78,6 @@ public class ServiceUI extends IntentService { } } - private void onWhy() { - Intent why = new Intent(Intent.ACTION_VIEW); - why.setData(Uri.parse(Helper.FAQ_URI + "#user-content-faq2")); - why.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - - PackageManager pm = getPackageManager(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - if (prefs.getBoolean("why", false) || why.resolveActivity(pm) == null) { - Intent view = new Intent(this, ActivityView.class); - view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(view); - } else { - prefs.edit().putBoolean("why", true).apply(); - startActivity(why); - } - } - - private void onSummary() { - Intent view = new Intent(this, ActivityView.class); - view.setAction("unified"); - view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(view); - } - private void onClear() { DB.getInstance(this).message().ignoreAll(); }