Android分享意图选择器

时间:2010-12-13 17:05:00

标签: android facebook twitter android-intent

我正在使用这样的东西在用户手机上使用可用的应用程序共享一些文本。

public void share(String subject,String text) {
     final Intent intent = new Intent(Intent.ACTION_SEND);

     intent.setType("text/plain");
     intent.putExtra(Intent.EXTRA_SUBJECT, subject);
     intent.putExtra(Intent.EXTRA_TEXT, text);

     startActivity(Intent.createChooser(intent, getString(R.string.share)));
}

我的主要问题是,如果用户选择Twitter而不是电子邮件,我希望有一个不同的文本(短版本的短版本VS带有附加图像的全文)。

如何找出用户决定使用哪个应用程序?

3 个答案:

答案 0 :(得分:8)

使用createChooser将文本移交给系统时,无法在此之后更改文本。

答案 1 :(得分:1)

 Intent intent = new Intent(Intent.ACTION_SEND);

 intent.setType("text/plain");
 intent.putExtra(Intent.EXTRA_SUBJECT, subject);
 intent.putExtra(Intent.EXTRA_TEXT, textWhichYouWantToShare);

 startActivity(Intent.createChooser(intent, getString(R.string.share)));

答案 2 :(得分:0)

点击社交(前推特)

shareOnSocial(activity, h.shareTwitter, Global.TWITTER_ID, shareContent, activity.getResources().getString(R.string.error_twitter));

创建选择器

shareOnSocial(activity, h.shareChooser, "choose", shareContent, activity.getResources().getString(R.string.error));

方法分享

private void shareOnSocial(Activity mAct, View shareView, String packageId, String content, String error) {
    shareView.startAnimation(clickAnimation);
    Intent i = new Intent();
    i.setAction(Intent.ACTION_SEND);
    i.putExtra(Intent.EXTRA_TEXT, content);
    i.setType("text/plain");

    if (!packageId.equals("choose")) {
        i.setPackage(packageId);
        try {
            mAct.startActivity(i);
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(mAct, error, Toast.LENGTH_SHORT).show();
        }
    } else {
        mAct.startActivity(Intent.createChooser(i, mAct.getString(R.string.share)));
    }
}