2012-06-21 5 views
17

Kann jemand zufällig auf die Fotogalerie des Telefons zugreifen? Ich mache eine Anwendung, die ein Bild von einem Pflanzenblatt macht und analysiert das Bild, um festzustellen, ob es bestimmt ist oder nicht. Wir hofften, dass wir dem Benutzer zwei Möglichkeiten geben könnten, das Bild des Blattes zu machen oder ein Bild eines Blattes zu verwenden, das der Benutzer bereits genommen hat. Wie auch immer, wir haben das Bild gemacht, aber wir wissen nicht, wie man auf die Fotogalerie zugreifen kann.Wie kann ich auf ein Bild von der Fotogalerie des Telefons zugreifen?

Antwort

32

Sie müssen die Gallery App mit dem integrierten Intents starten. Danach wird auf Ihrem onActivityResult(), den Pfad des ausgewählten Bildes erhalten und laden Sie Ihr Bild in Ihrem 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> 

Ihre Aktivität

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

14

Do Vergessen Sie nicht, die folgenden Berechtigungen zu AndroidManifest.xml hinzuzufügen:

<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
+0

Ich versuche, das hochgeladene Bild als Hintergrund zu setzen, weißt du wie? – nothingness

+0

READ_EXTERNAL_STORAGE wird nur benötigt, wenn Sie WRITE_EXTERNAL_STORAGE noch nicht haben. Sind Sie sicher, dass MANAGE_DOCUMENTS Sinn macht? https://developer.android.com/reference/android/Manifest.permission.html sagt: "Diese Berechtigung sollte nur von der Platform Document Management App angefordert werden. Diese Berechtigung kann nicht für Apps von Drittanbietern erteilt werden." –

Verwandte Themen