如何强制Share Intent打开特定的应用程序?

时间:2011-11-29 09:46:45

标签: android twitter android-intent share

我喜欢分享意图,使用图片和文字参数打开共享应用程序非常完美。

但现在我正在研究如何强制分享意图从列表中打开一个特定的应用程序,并给出共享意图的参数。

这是我的实际代码,它显示了手机上安装的共享应用列表。请问,有人可以告诉我应该添加什么代码以强制举例如官方Twitter应用程序?和官方的faccebok app?

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse("file:///sdcard/test.jpg");  
sharingIntent.setType("image/*");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "body text");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share image using"));

由于

3 个答案:

答案 0 :(得分:36)

对于Facebook

public void shareFacebook() {
        String fullUrl = "https://m.facebook.com/sharer.php?u=..";
        try {
            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.setClassName("com.facebook.katana",
                    "com.facebook.katana.ShareLinkActivity");
            sharingIntent.putExtra(Intent.EXTRA_TEXT, "your title text");
            startActivity(sharingIntent);

        } catch (Exception e) {
            Intent i = new Intent(Intent.ACTION_VIEW);
            i.setData(Uri.parse(fullUrl));
            startActivity(i);

        }
    }

对于Twitter。

public void shareTwitter() {
        String message = "Your message to post";
        try {
            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.setClassName("com.twitter.android","com.twitter.android.PostActivity");
            sharingIntent.putExtra(Intent.EXTRA_TEXT, message);
            startActivity(sharingIntent);
        } catch (Exception e) {
            Log.e("In Exception", "Comes here");
            Intent i = new Intent();
            i.putExtra(Intent.EXTRA_TEXT, message);
            i.setAction(Intent.ACTION_VIEW);
            i.setData(Uri.parse("https://mobile.twitter.com/compose/tweet"));
            startActivity(i);
        }
    }

答案 1 :(得分:6)

有一种更通用的方法,并不需要知道应用程序意图的完整包名。

看这篇文章: How to customize share intent in Android?

答案 2 :(得分:2)

100%工作解决方案

如果您想在任何应用中分享内容或通过每个操作打开网址,只需使用此方法:

shareOrViewUrlViaThisApp(<your package name>,<your url>);

然后简单地致电:

b1 and b2 and ((b3 or b4) and b5) and ((b6 and b7) or b8)

这个答案的灵感来自this