user167698
user167698

Reputation: 1863

How to startActivity with a ShareCompat.IntentBuilder

I'm attempting to add a shared intent to post to Google Plus and can't seem to resolve the issue of passing the new ShareCompat.IntentBuilder (Android support library class) to the startActivity method. I'm started out using this example. My app is compiled using Android 2.2 platform. Is it possible that there is another supporting way to start the Activity to launch the shared intent.

IntentBuilder shareIntent = ShareCompat.IntentBuilder.from(MyActivity.this);                
shareIntent.setText(message);
shareIntent.setSubject(subject);

if (mFullFileName != null) {
    File imageFile = new File(mFullFileName);
    if (imageFile.exists()) {
        shareIntent.setStream(Uri.fromFile(imageFile));
        shareIntent.setType("image/jpeg");
    }
} else {
    shareIntent.setType("*.*");
}   
shareIntent.getIntent();
// doesn't compile only accepts Intent and not the Intentbuilder 
startActivity(shareIntent); 

Upvotes: 18

Views: 20847

Answers (3)

Ahmed Maad
Ahmed Maad

Reputation: 551

ShareCompat.IntentBuilder.from(ActivityName.this) is deprecated, use the constructor of IntentBuilder like this:

Kotlin:

    ShareCompat
               .IntentBuilder(this@YourActivity)
               .setType("text/plain")
               .setChooserTitle("Share text with: ")
               .setText("Desired text to share")
               .startChooser()

Java:

new ShareCompat
                .IntentBuilder(YourActivity.this)
                .setType("text/plain")
                .setChooserTitle("Share text with: ")
                .setText("Desired text to share")
                .startChooser();

Upvotes: 17

klenki
klenki

Reputation: 318

Thats an example from my code, but if you want some reference material tap on the hyperlink for an article.

public void shareText(String text) {
        String mimeType = "text/plain";
        String title = "Example title";

        Intent shareIntent =   ShareCompat.IntentBuilder.from(this)
                                                    .setType(mimeType)
                                                    .setText(text)
                                                    .getIntent();
        if (shareIntent.resolveActivity(getPackageManager()) != null){
            startActivity(shareIntent);
        }
    }

Blog post on ShareCompat.IntentBuilder and sharing intents

Upvotes: 25

user167698
user167698

Reputation: 1863

Funny, I just figured it out... the example given was suppose create an Intent and not an IntentBuilder object.. had to change my code to chain the object creation.

Intent i = ShareCompat.IntentBuilder.from(MyActivity.this)
                       .setText(message)
                       .setSubject(subject)
                       .setStream(Uri.fromFile(imageFile))
                       .setType("image/jpeg")
                       .getIntent()
                       .setPackage("com.google.android.apps.plus");

Upvotes: 9

Related Questions