Skip to content Skip to sidebar Skip to footer

On Android Api 19 (4.4) The Intent.createchooser Method Causes Intentserviceleak

Running my app on the new Android KitKat device (API 19, 4.4) I get 'Copied to Clipboard' everytime I try to create an Intent chooser. This is happening on Youtube, Tumblr and var

Solution 1:

Here's my workaround solution for this issue. I first detect if the device is running on KIT_KAT or higher, and instead of creating a chooser, I simply try to start the intent. This will cause Android to ask the user which application they want to complete the action with (unless the user already has a default for all ACTION_SEND intents.

IntentsendIntent=newIntent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setType("text/plain");

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    // This will open the "Complete action with" dialog if the user doesn't have a default app set.
    context.startActivity(sendIntent);
} else {
    context.startActivity(Intent.createChooser(sendIntent, "Share Via"));
}

Solution 2:

@clu Has the answer right, just backwards lol. It should be this:

//Create the intent to share and set extrasIntentsendIntent=newIntent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setType("text/plain");

//Check if device API is LESS than KitKatif (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT)
    context.startActivity(sendIntent);
else
    context.startActivity(Intent.createChooser(sendIntent, "Share"));

This build check can be shortened to a one-liner as well:

//Create the intent to share and set extrasIntentsendIntent=newIntent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setType("text/plain");

//Check if device API is LESS than KitKat
startActivity(Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT ? sendIntent : intent.createChooser(sendIntent, "Share"));

Post a Comment for "On Android Api 19 (4.4) The Intent.createchooser Method Causes Intentserviceleak"