Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择图库中的图像_Java_Android - Fatal编程技术网

Java 选择图库中的图像

Java 选择图库中的图像,java,android,Java,Android,我有此代码,但当我点击按钮时,图库将打开,当我选择图像时,图库将再次关闭。什么也不会发生 公共类MainActivity扩展了AppCompatActivity{ private Button loadimagebutton; private ImageView imageView; private static int RESULT_LOAD_IMAGE = 1; @Override protected void onCreate(Bundle savedInstanceState) {

我有此代码,但当我点击按钮时,图库将打开,当我选择图像时,图库将再次关闭。什么也不会发生

公共类MainActivity扩展了AppCompatActivity{

private Button loadimagebutton;
private ImageView imageView;

private static int RESULT_LOAD_IMAGE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    loadimagebutton = (Button) findViewById(R.id.button);

    loadimagebutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, RESULT_LOAD_IMAGE);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data){
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        imageView = (ImageView)findViewById(R.id.imageView);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
    }
    else{
        Toast.makeText(getApplicationContext(), "ERROR", Toast.LENGTH_LONG).show();
    }
}
怎么了?

我希望这能帮助您:

private String getRealPathFromUri(Uri contentURI) {
    String result = "";
    Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
    if (cursor == null) {
        result = contentURI.getPath();
    } else {
        cursor.moveToFirst();
        int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
        result = cursor.getString(idx);
        cursor.close();
    }
    return result;
}
在onActivityResult()中

我希望这能帮助你:

private String getRealPathFromUri(Uri contentURI) {
    String result = "";
    Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
    if (cursor == null) {
        result = contentURI.getPath();
    } else {
        cursor.moveToFirst();
        int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
        result = cursor.getString(idx);
        cursor.close();
    }
    return result;
}
在onActivityResult()中

在handlePhotoUpload方法中,可以将ImageView设置为位图


在handlePhotoUpload方法中,您可以将ImageView设置为位图

不会发生任何事情?不会出错?不会崩溃?然后
decodeFile()
返回了
null
而不是有效的位图。请在使用和报告之前进行检查。您是否尝试在if语句中添加Log.d以查看它是否正确处理了您的逻辑?不会发生任何情况?不会出错?不会崩溃?那么
decodeFile()
返回了
null
而不是有效的位图。使用前请检查并报告。您是否尝试在if语句中添加Log.d以查看它是否正确处理了您的逻辑?该代码与原始代码相同。您为什么发布它?@greenapps它略有不同。我目前正在应用程序中使用它,我知道我是t工作。你为什么不告诉我它有什么不同?请解释你的代码/更改。该代码与原始代码相同。你为什么发布它?@greenapps它略有不同。我目前正在我的应用程序中使用它,我知道它工作。你为什么不告诉我它有什么不同?请解释你的代码/更改。
@Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    switch (requestCode) {
        case RESULT_LOAD_IMG:
            if (resultCode == RESULT_OK) {
                Uri selectedImage = imageReturnedIntent.getData();

                String[] filePathColumn = {MediaStore.Images.Media.DATA};
                Cursor cursor = getContentResolver().query(
                        selectedImage, filePathColumn, null, null, null);
                cursor.moveToFirst();

                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                String filePath = cursor.getString(columnIndex);
                cursor.close();


                Bitmap bMap = BitmapFactory.decodeFile(filePath);
                handlePhotoUpload(bMap);
            }
    }
}