2016-03-02 2 views
3

Я пытаюсь поделиться ссылкой с моим приложением с прямой подпиской. Диалоговое окно совместного доступа должно быть похоже на изображение ниже с наиболее часто используемыми контактами из приложений обмена сообщениями, такими как контакты WhatsApp.Android direct shared

Goal which I am trying to achieve

Это Intent структура, которую я использую для использования по ссылке:

Intent shareIntent = ShareCompat.IntentBuilder 
         .from(getActivity()) 
         .setType("text/plain") 
         .setText(sTitle+ "\n" + urlPost) 
         .getIntent(); 
       if (shareIntent.resolveActivity(
         getActivity().getPackageManager()) != null) 
        startActivity(shareIntent); 

И это то, что мое приложение показывает:

what my app shows

Любая идея, как для достижения этого?

+0

Ум, если вы тот, кто поделился ссылкой, вы не реализуете 'ChooserTargetService'.WhatsApp, приложение для контактов и другие приложения реализуют 'ChooserTargetService', если они того пожелают. – CommonsWare

+0

О, может быть, я немного смущен насчет 'ChooserTargetService', но почему, почему общий диалог из моего приложения не показывает контакты, когда я разделяю ссылку как текст? – cherif

+1

Возможно, WhatsApp не реализует «ChooserTargetService», или они не делают этого для любой структуры «Intent», которую вы используете для вашего запроса. – CommonsWare

ответ

3

Вы должны использовать .createChooserIntent() вместо .getIntent()

0

Как этот код ниже, вы можете использовать Intent.createChooser

  Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
      Uri screenshotUri = Uri.parse("file://" + filePath); 

      sharingIntent.setType("image/png"); 
      sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); 
      startActivity(Intent.createChooser(sharingIntent, "Share image using")); 
0

Вы должны использовать .createChooserIntent() вместо .getIntent()

Docs: Это использует намерение ACTION_CHOOSER, которое показывает

a. Это может быть использовано в качестве альтернативы стандартного подборщика деятельности, которая отображается в системе при попытке запуска действия с несколькими возможными матчами, с этими различиями в поведении:

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

Это действие должно использоваться, когда пользователь, естественно, ожидает, что выберите действие, чтобы продолжить. Пример, если не использовать , когда пользователь нажимает на ссылку «mailto:». Естественно, что рассчитывают перейти непосредственно к своему почтовому приложению, поэтому startActivity() должен быть вызван непосредственно : он либо запустит текущее предпочтительное приложение, либо поднимет диалоговое окно, позволяющее пользователю выбрать приложение для использования и, необязательно, отмечая это как предпочтительный.

В отличии от этого, если пользователь выбирает пункт меню, чтобы отправить изображение они просматриваемые кого-то еще, есть много разных вещей, которые они могут захотеть сделать в данный момент: отправить его по электронной почте, загружать его на веб-службу и т. д. В этом случае следует использовать действие CHOOSER, чтобы всегда представлял пользователю список вещей, которые они могут делать, с приятным заголовком, указанным вызывающим пользователем, таким как «Отправить эту фотографию с:".