How to access an image from the phone's photo gallery?

后端 未结 2 1008
时光说笑
时光说笑 2020-11-30 05:22

By any chance, does anyone know how to access the phone\'s photo gallery? I am making an application that takes a picture of a plant leaf and analyzes the image to determine

相关标签:
2条回答
  • 2020-11-30 05:46

    You have to launch the Gallery App using the built-in Intents. After that, on your onActivityResult(), get the path of the selected image and load your image into your ImageView

    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
    <TextView
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="@string/hello"
     />
    <Button
     android:id="@+id/loadimage"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="Load Image"
     />
    <TextView
     android:id="@+id/targeturi"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     />
    <ImageView
     android:id="@+id/targetimage"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     />
    </LinearLayout>
    

    Your Activity

     package com.exercise.AndroidSelectImage;
    
        import java.io.FileNotFoundException;
    
        import android.app.Activity;
        import android.content.Intent;
        import android.graphics.Bitmap;
        import android.graphics.BitmapFactory;
        import android.net.Uri;
        import android.os.Bundle;
        import android.view.View;
        import android.widget.Button;
        import android.widget.ImageView;
        import android.widget.TextView;
    
        public class AndroidSelectImage extends Activity {
    
        TextView textTargetUri;
        ImageView targetImage;
    
         /** Called when the activity is first created. */
         @Override
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);
             Button buttonLoadImage = (Button)findViewById(R.id.loadimage);
             textTargetUri = (TextView)findViewById(R.id.targeturi);
             targetImage = (ImageView)findViewById(R.id.targetimage);
    
             buttonLoadImage.setOnClickListener(new Button.OnClickListener(){
    
         @Override
         public void onClick(View arg0) {
          // TODO Auto-generated method stub
          Intent intent = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
          startActivityForResult(intent, 0);
         }});
         }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
    
        if (resultCode == RESULT_OK){
         Uri targetUri = data.getData();
         textTargetUri.setText(targetUri.toString());
         Bitmap bitmap;
         try {
          bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
          targetImage.setImageBitmap(bitmap);
         } catch (FileNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
         }
        }
        }
        }
    

    enter image description here

    0 讨论(0)
  • 2020-11-30 05:49

    Do not forget to add the following permissions to AndroidManifest.xml:

    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
    0 讨论(0)
提交回复
热议问题