J'ai trouvé l'option, adaptée à Android >= 22. Peut-être que cela peut aider quelqu'un.
A partir d'Android 22, il y a une option pour envoyer IntentSender
objet dans createChooser
méthode. Vous pouvez créer une intention en attente pour un récepteur de diffusion dans laquelle vous pouvez obtenir le nom du paquet de l'application sur laquelle un utilisateur a cliqué.
Récepteur :
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
// do something here
}
}
Manifeste :
<receiver android:name="MyReceiver" android:exported="false"/>
Créer une intention en suspens :
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
Et ensuite l'utiliser dans l'intention du sélecteur :
startActivity(Intent.createChooser(share
, "some_title"
, pendingIntent.getIntentSender()));
Ensuite, dans onReceiver
vous pouvez obtenir le nom du paquet de l'application :
String selectedAppPackage = String.valueOf(intent.getExtras().get(EXTRA_CHOSEN_COMPONENT))
Fuente: blogue moyen