Android - изображение не отображается из встроенной галереи - PullRequest
0 голосов
/ 05 февраля 2012

Я пытаюсь использовать встроенную галерею Android. Я могу получить галерею и альбомы, но всякий раз, когда я хочу отобразить изображение, галерея сразу же направляет меня обратно в мое приложение. Я не могу просмотреть изображение, несмотря на то, что оно было вызвано.

Это мой код:

public class CameraTab extends Activity implements OnClickListener{
private static final int SELECT_PICTURE = 1;

private String selectedImagePath;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera_tab);

    ImageButton cameraBtn = (ImageButton)findViewById(R.id.camera_btn);
    cameraBtn.setOnClickListener(this); 

    ImageButton galleryBtn = (ImageButton)findViewById(R.id.gallery_btn);
    galleryBtn.setOnClickListener(this);

}

public void onClick(View v) {
    // TODO Auto-generated method stub

    if (v == this.findViewById(R.id.camera_btn)){
    /// some codes here
    }

    if (v == this.findViewById(R.id.gallery_btn)){
             Intent intent = new Intent();
             intent.setType("image/*");
             intent.setAction(Intent.ACTION_GET_CONTENT);
             startActivityForResult(Intent.createChooser(intent,
                "Select Picture"), SELECT_PICTURE);
    }
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);           
        }
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

}

Может кто-нибудь помочь мне? Любая помощь будет оценена !! Спасибо!!

Ответы [ 3 ]

0 голосов
/ 25 июля 2012

Я думаю, что действие, которое вы хотите использовать, - Intent.ACTION_VIEW.попробуйте это

final Intent intent = new Intent(Intent.ACTION_VIEW);
final Uri uri = <The URI to your file>;
// Uri either from file eg.
final Uri uri = Uri.fromFile(yourImageFileOnSDCard); 
// or from media store like your method getPath() does but with the URI
// from http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html#EXTERNAL_CONTENT_URI
intent.setDataAndType(uri, "image/*");
startActivity(intent);

Строка "image/* - это тип MIME, который будет использоваться

Теперь галерея открыта с выбранной картинкой.Чтобы вернуться в ваше приложение, пользователь должен нажать кнопку «назад», как обычно;)

0 голосов
/ 13 июля 2014
private Context context;

public void onCreate(Bundle savedInstanceState) {
...
context = this;
}

Я использовал масштабированное растровое изображение ниже, потому что на некоторых устройствах изображения в галерее могут быть слишком большими для отображения в ImageView (у меня была эта проблема раньше).

0 голосов
/ 05 февраля 2012

Проблема в неправильном понимании намерения Intent.ACTION_GET_CONTENT.Он предназначен для выбора содержимого (в данном случае изображения / *) из архива.

Если вы хотите показать изображение, просто создайте новое действие с ImageViewего макет.Передайте URI изображения, используя setData.

...