diff --git a/README.md b/README.md index 475aca3..7a0d25e 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ context | prompt | iOS | undefined | Display prompt text when selecting assets. | | numberOfColumnsInPortrait | iOS | 4 | Set the number of columns in Portrait orientation. | | numberOfColumnsInLandscape | iOS | 7 | Set the number of columns in Landscape orientation. | -| mediaType | both | Any (iOS), Image (Android) | Choose whether to pick Image/Video/Any type of assets. | +| mediaType | both | Any | Choose whether to pick Image/Video/Any type of assets. | The **hostView** parameter can be set to the view that hosts the image picker. Applicable in iOS only, intended to be used when open picker from a modal page. diff --git a/src/imagepicker.android.ts b/src/imagepicker.android.ts index 09d8053..5037f76 100644 --- a/src/imagepicker.android.ts +++ b/src/imagepicker.android.ts @@ -147,7 +147,7 @@ export class ImagePicker { } get mediaType(): string { - const mediaType = this._options && 'mediaType' in this._options ? this._options.mediaType : ImagePickerMediaType.Image; + const mediaType = this._options && 'mediaType' in this._options ? this._options.mediaType : ImagePickerMediaType.Any; if (mediaType === ImagePickerMediaType.Image) { return "image/*"; } else if (mediaType === ImagePickerMediaType.Video) { @@ -227,6 +227,19 @@ export class ImagePicker { let intent = new Intent(); intent.setType(this.mediaType); + let length = this.mediaType === "*/*" ? 2 : 1; + let mimeTypes = Array.create(java.lang.String, length); + + if (this.mediaType === "*/*") { + mimeTypes[0] = "image/*"; + mimeTypes[1] = "video/*"; + } + else { + mimeTypes[0] = this.mediaType; + } + + // not in platform-declaration typings + intent.putExtra((android.content.Intent as any).EXTRA_MIME_TYPES, mimeTypes); // TODO: Use (android).content.Intent.EXTRA_ALLOW_MULTIPLE if (this.mode === 'multiple') { intent.putExtra("android.intent.extra.ALLOW_MULTIPLE", true);