diff --git a/ring-android/app/build.gradle b/ring-android/app/build.gradle
index 0d20992e369a1b0ca475415a41498b7aa14dc75c..ceed8e49c1363acdec0e1d8b6043067740a240aa 100644
--- a/ring-android/app/build.gradle
+++ b/ring-android/app/build.gradle
@@ -97,6 +97,7 @@ dependencies {
     implementation "com.google.android.material:material:1.3.0"
     implementation 'com.google.android:flexbox:1.1.1'
     implementation 'org.osmdroid:osmdroid-android:6.1.10'
+    implementation "androidx.sharetarget:sharetarget:1.1.0"
 
     // ORM
     implementation 'com.j256.ormlite:ormlite-android:5.3'
diff --git a/ring-android/app/proguard-rules.pro b/ring-android/app/proguard-rules.pro
index c7ae3c9ac97ad43d7a848042c6d14cfe3758b235..4d0ed664e3882573795f4b7349337bf30d9e43f3 100644
--- a/ring-android/app/proguard-rules.pro
+++ b/ring-android/app/proguard-rules.pro
@@ -9,6 +9,7 @@
 -keepattributes SourceFile,LineNumberTable
 
 -keep,includedescriptorclasses class androidx.core.content.FileProvider { *; }
+-keep,includedescriptorclasses class androidx.sharetarget.* { *; }
 
 -keepnames class * implements android.os.Parcelable {
     public static final ** CREATOR;
diff --git a/ring-android/app/src/main/AndroidManifest.xml b/ring-android/app/src/main/AndroidManifest.xml
index b3f02d00c778ba4c1bad9b18f0bf58cb00cf9d34..acca127b10b61bb72aae378144680d3a890a36a9 100644
--- a/ring-android/app/src/main/AndroidManifest.xml
+++ b/ring-android/app/src/main/AndroidManifest.xml
@@ -159,7 +159,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
             <meta-data
                 android:name="android.service.chooser.chooser_target_service"
-                android:value=".services.JamiChooserTargetService" />
+                android:value="androidx.sharetarget.ChooserTargetServiceCompat" />
         </activity>
         <activity
             android:name=".account.AccountWizardActivity"
@@ -412,16 +412,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
             android:icon="@mipmap/ic_launcher"
             android:theme="@style/AppThemeBase.Dark" />
 
-        <service
-            android:name=".services.JamiChooserTargetService"
-            android:label="ChooserTargetService"
-            android:icon="@mipmap/ic_launcher"
-            android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
-            <intent-filter>
-                <action android:name="android.service.chooser.ChooserTargetService" />
-            </intent-filter>
-        </service>
-
         <service
             android:name=".service.JamiJobService"
             android:permission="android.permission.BIND_JOB_SERVICE" />
diff --git a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
index 4674dd3c1c345bab44606c4eb8f7bf40411ea719..246c2d944b3ff9ea5a301be2c689d32e57699682 100644
--- a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
@@ -354,7 +354,7 @@ public class HomeActivity extends AppCompatActivity implements BottomNavigationV
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(count -> setBadge(R.id.navigation_home, count))));
 
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             mDisposable.add((mAccountService
                     .getCurrentAccountSubject()
                     .observeOn(Schedulers.computation())
@@ -809,6 +809,7 @@ public class HomeActivity extends AppCompatActivity implements BottomNavigationV
             i++;
         }
 
+        Log.w(TAG, "ShortcutManagerCompat.addDynamicShortcuts " + shortcutInfoList.size());
         ShortcutManagerCompat.removeAllDynamicShortcuts(this);
         ShortcutManagerCompat.addDynamicShortcuts(this, shortcutInfoList);
     }
diff --git a/ring-android/app/src/main/java/cx/ring/dependencyinjection/JamiInjectionComponent.java b/ring-android/app/src/main/java/cx/ring/dependencyinjection/JamiInjectionComponent.java
index 0e09a4d2ffdd01d853d415d2918ebb0a7c523f36..32e31932b7644683cb026b8bc03f290148e13085 100755
--- a/ring-android/app/src/main/java/cx/ring/dependencyinjection/JamiInjectionComponent.java
+++ b/ring-android/app/src/main/java/cx/ring/dependencyinjection/JamiInjectionComponent.java
@@ -68,7 +68,6 @@ import cx.ring.services.HardwareService;
 import cx.ring.services.HistoryServiceImpl;
 import cx.ring.services.LocationSharingService;
 import cx.ring.services.NotificationServiceImpl;
-import cx.ring.services.JamiChooserTargetService;
 import cx.ring.services.SharedPreferencesServiceImpl;
 import cx.ring.services.SyncService;
 import cx.ring.settings.AccountFragment;
@@ -220,8 +219,6 @@ public interface JamiInjectionComponent {
 
     void inject(TVSettingsFragment.PrefsFragment prefsFragment);
 
-    void inject(JamiChooserTargetService service);
-
     void inject(LocationSharingFragment service);
 
     void inject(JamiJobService service);
diff --git a/ring-android/app/src/main/java/cx/ring/services/JamiChooserTargetService.java b/ring-android/app/src/main/java/cx/ring/services/JamiChooserTargetService.java
deleted file mode 100644
index 551df4a7ca5cfd611db073a903986282c62c527c..0000000000000000000000000000000000000000
--- a/ring-android/app/src/main/java/cx/ring/services/JamiChooserTargetService.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  Copyright (C) 2004-2020 Savoir-faire Linux Inc.
- *
- *  Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package cx.ring.services;
-
-import android.content.ComponentName;
-import android.content.IntentFilter;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Icon;
-import android.os.Build;
-import android.os.Bundle;
-import android.service.chooser.ChooserTarget;
-import android.service.chooser.ChooserTargetService;
-import android.util.Log;
-
-import androidx.annotation.RequiresApi;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import cx.ring.application.JamiApplication;
-import cx.ring.contacts.AvatarFactory;
-import cx.ring.facades.ConversationFacade;
-import cx.ring.fragments.ConversationFragment;
-import cx.ring.model.CallContact;
-import cx.ring.model.Conversation;
-import io.reactivex.schedulers.Schedulers;
-
-@RequiresApi(api = Build.VERSION_CODES.M)
-public class JamiChooserTargetService extends ChooserTargetService {
-
-    @Inject
-    @Singleton
-    ConversationFacade conversationFacade;
-
-    private int targetSize;
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        JamiApplication.getInstance().startDaemon();
-        JamiApplication.getInstance().getInjectionComponent().inject(this);
-        targetSize = (int) (AvatarFactory.SIZE_NOTIF * getResources().getDisplayMetrics().density);
-    }
-
-    @Override
-    public List<ChooserTarget> onGetChooserTargets(ComponentName componentName, IntentFilter intentFilter) {
-        return conversationFacade
-                .getCurrentAccountSubject()
-                .firstOrError()
-                .flatMap(a -> a
-                        .getConversationsSubject()
-                        .firstOrError()
-                        .map(conversations -> {
-                            List<Future<Bitmap>> futureIcons = new ArrayList<>(conversations.size());
-                            for (Conversation conversation : conversations) {
-                                CallContact contact = conversation.getContact();
-                                futureIcons.add(AvatarFactory.getBitmapAvatar(this, contact, targetSize)
-                                        .subscribeOn(Schedulers.computation())
-                                        .toFuture());
-                            }
-                            int i=0;
-                            List<ChooserTarget> choosers = new ArrayList<>(conversations.size());
-                            for (Conversation conversation : conversations) {
-                                CallContact contact = conversation.getContact();
-                                Bundle bundle = new Bundle();
-                                bundle.putString(ConversationFragment.KEY_ACCOUNT_ID, a.getAccountID());
-                                bundle.putString(ConversationFragment.KEY_CONTACT_RING_ID, contact.getPrimaryNumber());
-                                Icon icon = null;
-                                try {
-                                    icon = Icon.createWithBitmap(futureIcons.get(i).get());
-                                } catch (Exception e) {
-                                    Log.w("RingChooserService", "Failed to load icon", e);
-                                }
-                                ChooserTarget target = new ChooserTarget(contact.getDisplayName(), icon, 1.f-(i/(float)conversations.size()), componentName, bundle);
-                                choosers.add(target);
-                                i++;
-                            }
-                            return choosers;
-                        }))
-                .timeout(5, TimeUnit.SECONDS)
-                .onErrorReturn(e -> new ArrayList<>())
-                .blockingGet();
-    }
-}
diff --git a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
index 7528e861fe0c9b529503f25069aea88e165d81d7..db7e9ea199af36df00429ace1dcb45c3dff8934b 100644
--- a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
@@ -558,7 +558,6 @@ public class NotificationServiceImpl implements NotificationService {
                     .setIntent(PendingIntent.getActivity(mContext, 0, intentBubble,
                             PendingIntent.FLAG_UPDATE_CURRENT))
                     .build())
-                    .addPerson(contactPerson.getUri())
                     .setShortcutId(key);
         }