为什么这两种方式得到的照片清单不同?

时间:2015-10-20 13:14:29

标签: android android-intent photo-gallery

第一种方式:

    Intent intent = new Intent();
    intent.setType( "image/*" );
    intent.setAction( Intent.ACTION_GET_CONTENT );
    startActivityForResult( Intent.createChooser( intent , "select picture" ) , REQUEST_LOAD_IMAGE );

第二种方式:

    Intent intent = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI );
    startActivityForResult( intent , REQUEST_LOAD_IMAGE );

输入选择图片活动后,列表不同。你能告诉我原因吗?

如果我要在Android手机上列出所有照片,我该怎么办?感谢

2 个答案:

答案 0 :(得分:0)

如果您希望用户根据MIME类型选择内容,请使用convert(varchar(255), (convert(decimal(10,2), Rate) * 1.1))

如果您希望用户选择某个特定集合(由ACTION_GET_CONTENT标识),请使用Uri

如果出现平局,请使用ACTION_PICK。虽然ACTION_GET_CONTENT未正式弃用,但Dianne Hackborn recommends ACTION_GET_CONTENT

取自CommonsWare的回答here

答案 1 :(得分:0)

要列出所有照片,您可以执行以下操作:

假设您有一个按钮,并打开图像选择器onClick,

int SELECT_FILE = 1;
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");
                startActivityForResult(
                        Intent.createChooser(intent, "Select File"),
                        SELECT_FILE);
            }
        });

假设您有一个imageView,在其中显示所选图像,然后:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            Uri selectedImageUri = data.getData();
            String[] projection = {MediaStore.MediaColumns.DATA};
            Cursor cursor = managedQuery(selectedImageUri, projection, null, null,
                    null);
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
            cursor.moveToFirst();

            String selectedImagePath = cursor.getString(column_index);
            Picasso.with(this)
                    .load(selectedImagePath)
                    .into(imageView);
        }
    }