通过Facebook,Twitter,电子邮件和仅消息分享应用程序

时间:2011-08-17 07:13:35

标签: android

我想通过Facebook,Twitter,电子邮件和短信分享我的应用程序。我不想与使用共享按钮时显示的其他选项共享它。

我目前正在使用以下代码进行分享按钮:

sharebuton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        String TEXT = "I shared the file " + " via MyApp";
        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setType("text/plain");
        sendIntent.putExtra(Intent.EXTRA_TEXT, TEXT);
        startActivity(Intent.createChooser(sendIntent, "Share the program:"));
    }
});

使用此代码时,系统会向用户显示共享应用程序的其他选项,如Gmail,记事本,窥视,蓝牙等,以及上述四个选项。

是否可以过滤共享选项,以便只向用户显示四个选项(Facebook,Twitter,电子邮件和消息)?

3 个答案:

答案 0 :(得分:1)

不确定您是否仍在寻找答案,但我最近遇到了我自己的解决方案,正是您正在尝试做的事情,但恰恰相反 - 我想创建一个用户可以共享的自定义应用程序列表与排除Facebook。您需要知道要排除/包含的应用程序的包名称。这是我的代码,它基本上列出了为处理ACTION_SEND命令而注册的可用软件包,然后您可以选择要显示的列表中的哪些项目。

    List<Intent> targetedShareIntents = new ArrayList<Intent>();
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("image/jpeg");
    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(intent, 0);
    if (!resInfo.isEmpty()) {
        for (ResolveInfo resolveInfo : resInfo) {
            String packageName = resolveInfo.activityInfo.packageName;
            Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND);
            targetedShareIntent.setType("image/jpeg");
            targetedShareIntent.putExtra(Intent.EXTRA_TITLE, "Title string");
            targetedShareIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject string");
            if ("com.facebook.katana".equals(packageName) || "com.facebook.orca".equals(packageName)) {
                    // don't add Facebook or Facebook messenger app to list
                continue;
            } else {
                targetedShareIntent.putExtra(Intent.EXTRA_TEXT, bodyStr);
            }
            targetedShareIntent.setPackage(packageName);
            targetedShareIntents.add(targetedShareIntent);
        }
        Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), getString(R.string.results_share_title));
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
        startActivity(chooserIntent);
    }

答案 1 :(得分:0)

我想这可能会以某种方式帮助你... Sending email from android app但我仍然会接受Commansware What is the purpose of using Intent.createChooser() in StartActivity() while sending email in Android的评论

答案 2 :(得分:0)

试试这个。

如果您想通过Facebook,Twitter,电子邮件和短信分享应用程序。

为此,您需要制作一个layout,您必须在其中提供您想要分享的选项。您可以为这些设置buttons

然后点击button然后您需要处理每个按钮的操作,例如email您需要打开email应用,而facebook则需要打开facebook 1}}和其他人一样。