Размещать разные тексты на Facebook и Twitter, используя Android - PullRequest
9 голосов
/ 14 октября 2011

Я хочу разрешить пользователю моего приложения для Android публиковать некоторые данные на fb, в твиттере и отправлять их кому-либо по электронной почте.Я использую Intent.ACTION_SEND для этого.Я могу добавить тему письма и добавить тест как Intent.EXTRA_TEXT.Но я хочу, чтобы разные приложения отправлялись в разные приложения.Как текст, который будет отправлен в твиттер, будет коротким, текст, который будет отправлен в фейсбук, будет содержать ссылку и описание снимка, так и в электронном письме есть все содержимое.Как я могу достичь такой функциональности?Самое большее, я могу позволить Facebook и Twitter брать один и тот же текст, но отличный от того, что есть в электронной почте.

Ответы [ 2 ]

6 голосов
/ 20 октября 2011

Сначала создайте Intent, представляющий то, что вы хотите отправить по электронной почте, опубликовать в Twitter и т. Д. Добавьте хорошие значения по умолчанию в Intent.EXTRA_TEXT и в теме.Затем вызовите Intent.createChooser () с вашим намерением.Этот метод возвращает Intent, представляющий, какое действие выбрал пользователь.Теперь, вот где мы добавляем желаемую настройку.Изучите Intent, который возвращается следующим образом:

Intent intentYouWantToSend = new Intent(Intent.ACTION_SEND);
intentYouWantToSend.putExtra(Intent.EXTRA_TEXT, "Good default text");
List<ResolveInfo> viableIntents = getPackageManager().queryIntentActivities(  
  intentYouWantToSend, PackageManager.MATCH_DEFAULT_ONLY);
//Here you'll have to insert code to have the user select from the list of 
//resolve info you just received.
//Once you've determined what intent the user wants, store it in selectedIntent
//This details of this is left as an exercise for the implementer. but should be fairly
//trivial
if(isTwitterIntent(selectedIntent)){
  selectedIntent.putExtra(Intent.EXTRA_TEXT, "Different text for twitter");
}
else if(isFacebookIntent(selectedIntent)){
  selectedIntent.putExtra(Intent.EXTRA_TEXT, "Different text for facebook");
}
startActivity(selectedIntent);

Изучив Intent, который возвращается Intent.createChooser, мы можем определить, как нам нужно изменить его, прежде чем запускать его.Вы должны будете самостоятельно реализовать функции isTwiterIntent и isFacebookIntent.Я полагаю, что это будет относительно легко, так как вам, вероятно, просто нужно изучить контекст намерения.Я проведу еще немного исследований и выясню, не смогу ли я найти точное решение для определения того, предназначен ли Intent для Twitter или Facebook или что-то еще, и постараюсь дать вам более полный ответ.

0 голосов
/ 22 ноября 2012
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    List<ResolveInfo> activities = getPackageManager().queryIntentActivities(sharingIntent, 0);

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

затем, нажав на прослушиватель конкретного приложения, вы можете внести свои изменения в виде кода

public void onClick(DialogInterface dialog, int which) 
        {
            ResolveInfo info = (ResolveInfo) adapter.getItem(which);
            if(info.activityInfo.packageName.contains("facebook"))
            {
                shareToFacebook();
            } 
            else { 

                Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
                sharingIntent.setClassName(info.activityInfo.packageName, info.activityInfo.name);
                sharingIntent.setType("text/plain");
                sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "hello");
                sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "intent"); 
startActivity(sharingIntent);
            } 
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...