Получить имя пакета приложения, выбранное пользователем для совместного использования, с помощью Intent.ACTION_SEND

Я использую следующий код, чтобы поделиться текстом

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "share test");
startActivity(Intent.createChooser(sharingIntent, "Share using"));

Я хочу знать название пакета приложения, выбранного пользователем для совместного использования. Я пробовал сделать это с помощью IntentSender для устройств 5.1+, используя следующий код

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.putExtra(Intent.EXTRA_TEXT, "share test");
sharingIntent.setType("text/plain");

Intent receiver = new Intent(this, BroadcastTest.class);
receiver.putExtra("test", "test");

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
Intent chooser = Intent.createChooser(sharingIntent, "Share using", pendingIntent.getIntentSender());
startActivity(chooser);

Ниже приводится BroadcastReceiver.

public class BroadcastTest extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        for (String key : intent.getExtras().keySet()) {
            Log.d(getClass().getSimpleName(), " " + intent.getExtras().get(key));
        }
    }
}

Ссылается на этот ответ https://stackoverflow.com/a/38342788/6053724, но onReceive () BroadcastReceiver не вызывается . Есть ли что-нибудь, чего мне не хватает, чтобы это работало?

Обновление: Выяснилось, что приведенный выше код хорошо работает в 5.1 (api 22), но в 6.0 (api 23) широковещательная передача не принимается сразу после получения приложения для совместного использования или иногда трансляция теряется.


person Neha Madiwal    schedule 22.02.2017    source источник
comment
Вы где-то регистрировали это BroadcastReceiver через registerReceiver() или манифест?   -  person CommonsWare    schedule 22.02.2017
comment
да. Я добавил это манифест.   -  person Neha Madiwal    schedule 22.02.2017


Ответы (1)


Я не уверен, что это именно то, что вы ищете, но есть библиотека, которая может вам в этом помочь: https://github.com/zawadz88/material-activity-chooser

Это позволяет, например, обработать приложение, по которому был выполнен щелчок (см. https://github.com/zawadz88/material-activity-chooser/blob/master/sample/src/main/java/com/github/zawadz88/sample/TrackingActivityChooserActivity.java)

person Piotr Zawadzki    schedule 22.02.2017
comment
Спасибо @piotr. Но мне не разрешено использовать какую-либо библиотеку или пользовательский интерфейс для выбора. - person Neha Madiwal; 22.02.2017