如何将图像设置为图库中的图像视图?请告诉我如何实现它?提前致谢

how to set the image to imageview from gallery ? Please tell me how to achieve it ? Thanks advance

这是我的MainActivity.java

public class MainActivity extends AppCompatActivity {

int PICK_IMAGE_REQUEST=1;

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

    Button btn= (Button) findViewById(R.id.btnImgGet);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();

            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
        }
    });

}

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

    if(resultCode==RESULT_OK){

        if(requestCode==PICK_IMAGE_REQUEST && null != data)
        {
            //Toast.makeText(getApplicationContext(),"onActivityResult working",Toast.LENGTH_SHORT).show();
          try {
              Uri uri = data.getData();
              String[] projection = {MediaStore.Images.Media.DATA};

           Cursor cursor = getContentResolver().query(uri,projection,null,null,null);
              cursor.moveToFirst();
             int column_index=cursor.getColumnIndex(projection[0]);

              String path = getString(column_index);
              cursor.close();
            //  Log.d("Image Path is->",path);
              ImageView imageView = (ImageView) findViewById(R.id.imgView);
              imageView.setImageBitmap(BitmapFactory.decodeFile(path));
          }catch (NullPointerException ex){ex.printStackTrace();}

        }

    }


}

}

这里是 Logcat..

01-23 18:13:41.767 7528-7528/com.example.manpreetsingh.gridviewimages W/ResourceType: No package identifier when getting value for resource number 0x00000000
01-23 18:13:41.778 7528-7528/com.example.manpreetsingh.gridviewimages D/AndroidRuntime: Shutting down VM
01-23 18:13:41.834 7528-7528/com.example.manpreetsingh.gridviewimages E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.manpreetsingh.gridviewimages, PID: 7528
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:21776 flg=0x1 }} to activity {com.example.manpreetsingh.gridviewimages/com.example.manpreetsingh.gridviewimages.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x0
        at android.app.ActivityThread.deliverResults(ActivityThread.java:3659)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:3702)
        at android.app.ActivityThread.access00(ActivityThread.java:155)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5343)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
     Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
        at android.content.res.Resources.getText(Resources.java:299)
        at android.content.res.Resources.getString(Resources.java:385)
        at android.content.Context.getString(Context.java:377)
        at com.example.manpreetsingh.gridviewimages.MainActivity.onActivityResult(MainActivity.java:68)
        at android.app.Activity.dispatchActivityResult(Activity.java:6218)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:3655)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:3702) 
        at android.app.ActivityThread.access00(ActivityThread.java:155) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5343) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
01-23 18:13:44.494 7528-7528/? I/Process: Sending signal. PID: 7528 SIG: 9

你这里有多个问题。

从战术上讲,您在 Activity 上调用 getString(),而不是 Cursor,这将不起作用。

除此之外,onActivityResult() 中的几乎所有内容都不正确。你得到的Uri不一定在MediaStore里,MediaStore不一定给你提供一个你能看懂的路径

请使用 an image loading library, like Picasso,拍摄 Uri 并将图像放入您的 ImageView

如果您坚持自己这样做,请分叉一个后台线程,并在 ContentResolver 上使用 getInputStream(),将该流传递给 BitmapFactory 上的 decodeStream()