What is createChooser when I have to use Intents?

2019-03-12 17:40发布

问题:

I have been taking a look over stackoverflow but I did't find a definition about what is "createChooser" and why I can use and in whick kind of situations is good to use it.

Thanks in advance.

回答1:

For example: you have a share picture option in your application.

You define an intent like this:

Intent picMessageIntent = new Intent(android.content.Intent.ACTION_SEND);
picMessageIntent.setType("image/jpeg");

File downloadedPic =  new File(
    Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_DOWNLOADS),
    "q.jpeg");

picMessageIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(downloadedPic));

Than when you call:

startActivity(picMessageIntent);  

all applications on your phone capable of getting this picture will be listed.

If you want to custimize the title of that list, you can use createChooser like this:

startActivity(Intent.createChooser(picMessageIntent, "Send your picture using:"));



回答2:

When startActivity(intent) is called for the first time from your app the user sees a list of all apps capable to handle this intent.

There is also an option to always handle this intent using one of the apps from the list. If this option is used then the list will never be shown again.

If you use createChooser in your intent then the "always use this app" option is not shown. The user always sees this list.



回答3:

This method is used when you want to create a Custom Action using an Intent... Just like what android provides ACTION_VIEW etc... but here when there are multiple choices to perform an an Action this chooser will bring up a dialog which will have all available options and let the user select one... here is an example