Как поделиться различными текстами на основе названия пакета в Android 10? - PullRequest
5 голосов
/ 23 апреля 2020

Мое приложение имеет определенный c URL-адрес, который открывается в других приложениях, но я хочу использовать пользовательский URL-адрес в зависимости от того, с каким приложением его разделяет пользователь. Например, с Gmail я хочу использовать myurl.com?src=gmail, а с FB я хочу использовать myurl.com?src=fb et c.

Это обычно работало бы с этим известным методом: { ссылка }. Однако в Android 10 это решение больше не работает: https://medium.com/@AndroidDeveloperLB / this-wont-work-anymore-on- android -q-1702c19eb7bb

Итак, какие еще варианты есть?

1 Ответ

1 голос
/ 04 мая 2020

Ну, всегда есть варианты. В этом конкретном случае (с учетом заданных условий относительно параметра запроса URL) я бы предложил создать отдельный метод совместного использования для каждой платформы, с которой вы хотите поделиться своим контентом, а не использовать метод совместного использования Android по умолчанию.

Например, здесь - это пользовательский общий доступ для Facebook и т. Д. c. Хотя этот метод довольно трудоемкий.

Но есть лучший вариант для обработки таких случаев. Это относительно новый способ получения информации о том, какое приложение было выбрано. Это просто. В основном вам необходимо:

  • Создать PendingIntent для BroadcastReceiver и предоставить IntentSender в Intent.createChooser(), например:
Intent share = new Intent(ACTION_SEND);
...
PendingIntent pi = PendingIntent.getBroadcast(myContext, requestCode,
                new Intent(myContext, MyBroadcastReceiver.class),
                FLAG_UPDATE_CURRENT);
share = Intent.createChooser(share, null, pi.getIntentSender());
  • Получите обратный вызов в MyBroadcastReceiver и посмотрите в Intent.EXTRA_CHOSEN_COMPONENT следующим образом:
@Override public void onReceive(Context context, Intent intent) {
  ...
  ComponentName clickedComponent = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT);
}

Подробнее здесь

Хотя вы не можете изменить Ваш URL для каждого конкретного c случая, поскольку событие совместного использования уже произошло, вы можете реализовать отдельный вызов API или ссылку URL, с помощью которой вы можете собирать данные аналитики, изменять результат отправленного вами клика URL (если вы контролируете серверную часть, конечно) или просто показать настроенное сообщение пользователю вашего приложения.

Имейте в виду, что для некоторых случаев использования этого метода URL-адрес, которым вы делитесь, должен быть уникальным для каждого пользователя (например, для изменения результата URL нажмите et c).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...