在android中使用Intent.action_SEND分享Fb,Tw和Email

时间:2013-04-22 06:50:39

标签: android facebook android-intent android-alertdialog intentfilter

我必须将文字和电子邮件发布到FB,TW和电子邮件。

这里我创建了一个imageview.if我必须clcik这些imageview意味着警报dislog框正在打开。这里列出了以下3项:FB,TW,电子邮件

这里如果我必须在警告列表上FB,这意味着它是使用action_send转到FB应用程序...也发布文本和图像。其他的TW和电子邮件应用程序是隐藏。

如果我在警报列表上点击TW意味着它会转到Tw应用并发布文本和图像同时隐藏FB,电子邮件应用...

我该怎么办?

请帮助我..我使用下面的代码...在这里我点击Fb意味着没有发生任何事情???请给我这些解决方案...我的设备安装了FB,TW应用程序也......然后为什么没有发生什么?请给我一些建议???我的代码有什么问题???

ImageView share = (ImageView) findViewById(R.id.imageView5);
    share.setOnClickListener(new OnClickListener()
    {
        public void onClick (  final View v )
        {
            final CharSequence[] items =
            {
                    "Facebook", "Twitter", "Email"
            };

            AlertDialog.Builder builder = new AlertDialog.Builder(SubCate.this);
            builder.setTitle("Share Via:");
            builder.setItems(items, new DialogInterface.OnClickListener()
            {
                public void onClick ( DialogInterface dialog , int item )
                {
                    if (items[item] == "Facebook")
                    {

                        initShareIntent("facebook");

                    }
                    if(items[item] == "Twitter"){
                        initShareIntent("twitter");

                       } 
                    if (items[item] == "Email")
                    {

                        initShareIntent("gmail");

                    }
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
        }
    });
}



  private void initShareIntent(String type) {
        boolean found = false;
        Intent share = new Intent(android.content.Intent.ACTION_SEND);
        share.setType("image/jpeg");

        // gets the list of intents that can be loaded.
        List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
        if (!resInfo.isEmpty()){
            for (ResolveInfo info : resInfo) {
                if (info.activityInfo.packageName.toLowerCase().contains(type) || 
                        info.activityInfo.name.toLowerCase().contains(type) ) {
                    share.putExtra(Intent.EXTRA_SUBJECT,  _Substring);
                    share.putExtra(Intent.EXTRA_TEXT,     _Substring);
                    share.putExtra(Intent.EXTRA_STREAM, Uri.parse(_Image)); 
                    share.setPackage(info.activityInfo.packageName);
                    found = true;
                    break;
                }
            }
            if (!found)
                return;

            startActivity(Intent.createChooser(share, "Select"));
        }
    }

修改

在这里我必须运行应用程序:

如果我必须点击Fb意味着Facebook墙正在打开......但是文字没有显示在这里......

如果我ahev点击Tw意味着twitter墙正在打开... Twitter文本显示在墙上..但是图像无法加载消息显示....

如果我必须点击电子邮件意味着gmail正在打开并且还在主题上显示文字......

为什么twiiter图像无法加载消息显示...也FB文本和图像不显示????请给我这些????

的解决方案

2 个答案:

答案 0 :(得分:0)

使用SoicalAuth实现此功能非常简单,您不需要为此创建列表视图和布局.... 见this link

答案 1 :(得分:0)

在facebook中,用户无法通过操作发送加载文本的已知问题,但您可以上传图像。你也可以使用facebook api加载文本。

在Twitter中,您也可以发送图像以及不会显示任何问题的文字。

尝试使用以下代码。希望这会帮助你 。

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);

            shareIntent.setType("image/*");

            shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

            Uri uri = Uri.parse("file://"+combinedFilepath.trim());
                String extraString="set";
                shareIntent.putExtra(Intent.EXTRA_TEXT,extraString);                                    
                shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
                shareIntent.putExtra(Intent.EXTRA_TITLE, extraString);
                shareIntent.putExtra(Intent.EXTRA_SUBJECT, "app name");         

                startActivity(Intent.createChooser(shareIntent, "Share via"));