Я использую следующий код, чтобы поделиться текстом
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) широковещательная передача не принимается сразу после получения приложения для совместного использования или иногда трансляция теряется.
BroadcastReceiver
черезregisterReceiver()
или манифест? - person CommonsWare   schedule 22.02.2017