请教,intent.setType("image/*")能不能只过滤jpg?

xuyang0109 2019-03-15 04:25:33
我在做选择画册的功能。
网上的资料都是 intent.setType("image/*");
这样的话,png和jpg都能选择。
如果改成 intent.setType("image/jpeg");
不但jpg,连mp4也能选择了。

请问,我怎样才能设定,只能选择扩展名是 jpg 或 jpeg 的图片?


Intent intent = new Intent("android.intent.action.GET_CONTENT");

//intent.setType("image/jpeg");
intent.setType("image/*");

//打开系统相册
startActivityForResult(intent, REQUEST_IMAGE_GET);
...全文
735 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuyang0109 2019-03-16
  • 打赏
  • 举报
回复
如果用 String[] mimeTypes = {"image/jpg", "image/jpeg"}; intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); 闪退时logcat的错误是: 03-16 01:19:00.645 2642-2642/com.coma.android_app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.coma.android_app, PID: 2642 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT (has extras) } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424) at android.app.Activity.startActivityForResult(Activity.java:3424) at android.app.Activity.startActivityForResult(Activity.java:3385) at com.coma.app.clsTakePhotoSelectImg.mSelectImage(clsTakePhotoSelectImg.java:184) at com.coma.app.MainActivity$6.onClick(MainActivity.java:996) at android.view.View.performClick(View.java:4438) at android.view.View$PerformClick.run(View.java:18422) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)
YXTS122 2019-03-16
  • 打赏
  • 举报
回复
闪退的话是报了什么错呀,贴出日志来 。。。。。。。。。
xuyang0109 2019-03-15
  • 打赏
  • 举报
回复
非常感谢! 但是使用这个方法,闪退了。网上找了一个类似的,但是还是连图片和mp4视频,都能选择。我只想选择jpg。 我完全不懂安卓开发。请问应该怎么改?

    //方法,相册选取
    //在 MainActivity 中的调用方法:clsTakePhotoSelectImg.mSelectImage(MainActivity.this);
    public static void mSelectImage(Activity praActivity) {
        Intent intent = new Intent("android.intent.action.GET_CONTENT");


        //这种方法,闪退
        //所有图片格式:intent.setType("image/*");
        //String[] mimeTypes = {"image/jpg", "image/jpeg"};
        //intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);


        String[] supportedMimeTypes = {"image/jpg", "image/jpeg"};

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            intent.setType(supportedMimeTypes.length == 1 ? supportedMimeTypes[0] : "*/*");
            if (supportedMimeTypes.length > 0) {
                intent.putExtra(Intent.EXTRA_MIME_TYPES, supportedMimeTypes);
            }
        } else {
            String mimeTypes = "";
            for (String mimeType : supportedMimeTypes) {
                mimeTypes += mimeType + "|";
            }
            intent.setType(mimeTypes.substring(0,mimeTypes.length() - 1));
        }

        //打开系统相册
        praActivity.startActivityForResult(intent, REQUEST_IMAGE_GET);

    }

嘿科 2019-03-15
  • 打赏
  • 举报
回复
1.可以通过选择后的结果来过滤。 2.Type可以设置成多种格式,比如 String[] mimeTypes = {"image/jpg", "image/jpg", "application/zip""}; intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);可以试试。

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧