diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index afaa2300e3..60b64e6b22 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -70,6 +70,9 @@
+
diff --git a/app/src/main/java/eu/faircode/email/Shortcuts.java b/app/src/main/java/eu/faircode/email/Shortcuts.java
index adbd534259..3070d248a4 100644
--- a/app/src/main/java/eu/faircode/email/Shortcuts.java
+++ b/app/src/main/java/eu/faircode/email/Shortcuts.java
@@ -21,14 +21,11 @@ package eu.faircode.email;
import android.Manifest;
import android.annotation.TargetApi;
-import android.app.Person;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -36,6 +33,10 @@ import android.provider.ContactsContract;
import android.text.TextUtils;
import android.widget.Toast;
+import androidx.core.app.Person;
+import androidx.core.content.pm.ShortcutInfoCompat;
+import androidx.core.content.pm.ShortcutManagerCompat;
+import androidx.core.graphics.drawable.IconCompat;
import androidx.lifecycle.LifecycleOwner;
import java.io.InputStream;
@@ -47,17 +48,17 @@ public class Shortcuts {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N_MR1)
return;
- new SimpleTask>() {
+ new SimpleTask>() {
@Override
@TargetApi(Build.VERSION_CODES.N_MR1)
- protected List onExecute(Context context, Bundle args) {
+ protected List onExecute(Context context, Bundle args) {
ShortcutManager sm = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
- int app = sm.getMaxShortcutCountPerActivity();
+ int app = ShortcutManagerCompat.getMaxShortcutCountPerActivity(context);
int manifest = sm.getManifestShortcuts().size();
int count = app - manifest;
Log.i("Shortcuts count=" + count + " app=" + app + " manifest=" + manifest);
- List shortcuts = new ArrayList<>();
+ List shortcuts = new ArrayList<>();
if (count > 0) {
DB db = DB.getInstance(context);
List frequently = db.contact().getFrequentlyContacted(count);
@@ -65,9 +66,10 @@ public class Shortcuts {
Intent intent = new Intent(context, ActivityMain.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.setAction(Intent.ACTION_SEND);
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("mailto:" + contact.email));
- Icon icon = null;
+ IconCompat icon = null;
if (contact.avatar != null &&
Helper.hasPermission(context, Manifest.permission.READ_CONTACTS)) {
// Create icon from bitmap because launcher might not have contacts permission
@@ -75,16 +77,16 @@ public class Shortcuts {
context.getContentResolver(), Uri.parse(contact.avatar));
Bitmap bitmap = BitmapFactory.decodeStream(is);
if (bitmap != null)
- icon = Icon.createWithBitmap(bitmap);
+ icon = IconCompat.createWithBitmap(bitmap);
}
if (icon == null)
- icon = Icon.createWithResource(context, R.drawable.ic_shortcut_email);
+ icon = IconCompat.createWithResource(context, R.drawable.ic_shortcut_email);
String name = (TextUtils.isEmpty(contact.name) ? contact.email : contact.name);
//Set categories = new HashSet<>(Arrays.asList(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION));
- ShortcutInfo.Builder builder = new ShortcutInfo.Builder(context, Long.toString(contact.id))
+ ShortcutInfoCompat.Builder builder = new ShortcutInfoCompat.Builder(context, Long.toString(contact.id))
.setIcon(icon)
.setRank(shortcuts.size() + 1)
.setShortLabel(name)
@@ -111,9 +113,8 @@ public class Shortcuts {
@Override
@TargetApi(Build.VERSION_CODES.N_MR1)
- protected void onExecuted(Bundle args, List shortcuts) {
- ShortcutManager sm = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
- sm.setDynamicShortcuts(shortcuts);
+ protected void onExecuted(Bundle args, List shortcuts) {
+ ShortcutManagerCompat.addDynamicShortcuts(context, shortcuts);
}
@Override