使用Android意图在Facebook和Twitter上发布不同的文本

我想让我的android应用程序的用户在fb,twitter上发布一些数据并将它发送给某人。 我为此使用Intent.ACTION_SEND。 我可以添加电子邮件主题并将测试添加为Intent.EXTRA_TEXT。 但我希望将不同的文本发送给不同的应用程序。 就像要发送给Twitter的文本一样短,要发送到Facebook的文本将具有链接和镜头描述,并且在ein电子邮件中包含所有内容。 我怎样才能实现这样的功能? 我最多可以让Facebook和Twitter采取与电子邮件中的内容不同的相同文本。


首先,创建一个Intent,代表你想要发送的电子邮件,发布推特等。在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.createChooser返回的Intent,我们可以确定在启动它之前我们需要如何修改它。 尽管如此,你必须实现isTwiterIntent和isFacebookIntent函数。 我想这将是相对容易的,因为你可能只需要检查意图的上下文。 我会做更多的研究,看看我是否找不到确切的解决方案来确定一个意图是用于Twitter还是Facebook,或者其他什么,并试图给你一个更完整的答案。


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);
            } 
        }
链接地址: http://www.djcxy.com/p/23255.html

上一篇: Post different text on facebook and twitter using Android intents

下一篇: How do I get extra data from intent on Android?