java - 选择图库中的图像

标签 java android

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

公共(public)类 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();

imageView = (ImageView)findViewById(R.id.imageView);
imageView.setImageBitmap(BitmapFactory.decodeFile(getRealPathFromUri(uri)));

关于java - 选择图库中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40536456/

相关文章:

java - 关闭 session 后立即触发 destroyListener

Java的compareTo方法-找不到符号错误

java - 想法 : Content is not allowed in prolog

Android Pie 上的 Android App Licensing 崩溃

java - 如何在 Android Java 中将 strVarName.equals 嵌套在 toLowerCase 周围

java - 为什么可以访问和操作自己类的私有(private)成员

java - Java 中的 C# Timespan 等价物?

android - 下载同一个文件两次?

java - 显示对话框时应用程序崩溃

java - BaseGameUtils 无法解析符号 android 在 : "com.google.android.gms.games.Games"