Включение дополнительных возможностей Android Share Intent в зависимости от того, какой метод они предпочитают использовать

Просто хотите поделиться динамической текстовой строкой + URL-адрес приложения. Собственное намерение использовать Android настроено правильно и отлично работает с Twitter, Gmail и т. Д. Но, как многие догадываются, это не работает с Facebook. Появление, потому что Facebook не будет принимать текст в поле intent.EXTRA_TEXT , только один URL.

Ну, мой вопрос к y'all: есть ли способ отделить дополнительные намерения долевого участия в зависимости от того, какой метод они предпочитают делиться? Например, если они делятся через gmail или Twitter, используйте существующий String + URL (желаемый вариант) EXTRA_TEXT , но если они решили делиться через Facebook, используйте только URL-адрес EXTRA_TEXT .

Не очень хочется реализовать Android Android SDK для такой простой задачи, которая встроена в Android.

Цените свое время и совет.

Пробовал что-то вроде этого, но он явно терпит неудачу, потому что он проверяет, существует ли опция совместного доступа (когда общий доступ всплывает, а не после того, как он нажимает метод общего доступа), он не отвечает, когда выбирает метод.

  String shareBody = "app string text " + act_txt + " more text! Get the app at http://www.appurl.com"; PackageManager pm = view.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0); for(final ResolveInfo app : activityList) { Log.i(TAG, "app.actinfo.name: " + app.activityInfo.name); //if((app.activityInfo.name).contains("facebook")) { if("com.facebook.katana.ShareLinkActivity".equals(app.activityInfo.name)) { sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://www.appurl.com"); startActivity(Intent.createChooser(sharingIntent, "Share idea")); break; } else { sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "app name"); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); startActivity(Intent.createChooser(sharingIntent, "Share")); break; } } 

Нашел решение, на этот вопрос SO, требуя чего-то еще: https://stackoverflow.com/a/8550043/1938669

Попытка, поставленная моим первоначальным вопросом, была близка. В этом цикле возможного списка ShareIntent List вам необходимо создать новое намерение для общего доступа, предназначенное для конкретного выбора совместного доступа (например, facebook или twitter)

Вот окончательное рабочее решение, которое разделяет только URL-адрес, если выбрана функция facebook, в противном случае разделяет полную текстовую строку + url:

 public void shareIt(View view){ //sharing implementation List<Intent> targetedShareIntents = new ArrayList<Intent>(); Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); String shareBody = "string of text " + txt_var + " more text! Get the app at http://someapp.com"; PackageManager pm = view.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0); for(final ResolveInfo app : activityList) { String packageName = app.activityInfo.packageName; Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND); targetedShareIntent.setType("text/plain"); targetedShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "share"); if(TextUtils.equals(packageName, "com.facebook.katana")){ targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://someurl.com"); } else { targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); } targetedShareIntent.setPackage(packageName); targetedShareIntents.add(targetedShareIntent); } Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share Idea"); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{})); startActivity(chooserIntent); } 
Intereting Posts
В IntelliJ, как установить уровень API Android Как отображать всплывающее окно или диалог, когда телефон заблокирован? StaggeredGridLayoutManager переупорядочивает элементы Имея разделитель в LinerLayout с помощью android: divider и android: showDividers Что произойдет, если я оставлю все свои изображения в папке drawable-hdpi? Какой метод аутентификации следует использовать с драгоценным камнем Sorcery с помощью мобильного приложения? JUnit и Android? Android, как очистить недавний список задач, который можно получить с кнопки «Главная» в большинстве телефонов? Отражение – это возможный путь? Список разрешений Android для обычных разрешений и опасных разрешений в API 23? Автоматический снимок экрана для запуска Android-приложения для приложения магазина приложений Как добавить раздутый вид в линейную компоновку Создание текста одинакового размера на разных устройствах Разработка Android NFC с использованием фрагмента AppCompat и Fragment не работают Android – Javascript: как выполнить jquery в webview