Как открыть изображение в программе просмотра изображений по умолчанию Android - PullRequest
0 голосов
/ 05 июля 2018

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

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

Я бы хотел поймать это событие и открыть выбранное изображение в полноэкранном режиме в своей пользовательской активности.

int PICKFILE_REQUEST_CODE=10;
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(intent, PICKFILE_REQUEST_CODE);

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Наконец-то я заработал.

1. Запустите File Manager, чтобы выбрать файл (в моем случае это файл изображения)

int PICKFILE_REQUEST_CODE=33; // class property

Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT); // It helps to get Image Uri 
intent.setType("image/*"); // Filter only images to open
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(intent, PICKFILE_REQUEST_CODE);

2. Используйте событие onActivityResult, чтобы получить результат выбора намерения с помощью PICKFILE_REQUEST_CODE

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

if (requestCode == PICKFILE_REQUEST_CODE ) {
   if(resultCode == Activity.RESULT_OK){
      Uri imageUri = data.getData();     
      Intent intent = new Intent(this, ImageViewer.class);
      intent.putExtra("imageUri", imageUri.toString());
      startActivity(intent); // Start new intent to see the full sized image ImageViewer
    }
}

3. А с ImageViewer мы можем сделать весь персонал с Image

public class ImageViewer extends AppCompatActivity {

    private ImageView imgView;
    private String fullScreenInd;

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

        Uri myUri = Uri.parse(getIntent().getExtras().getString("imageUri"));
        imgView = (ImageView)findViewById(R.id.fullImageView);
        imgView.setImageURI(myUri);

        imgView.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
        imgView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
        imgView.setAdjustViewBounds(false);
        imgView.setScaleType(ImageView.ScaleType.FIT_XY);

    }
}
0 голосов
/ 05 июля 2018

Попробуйте использовать этот код

 Intent intent = new Intent();
 intent.setAction(Intent.ACTION_VIEW);
 intent.setDataAndType(fileuri, "image/*");
 startActivity(intent); 

Edit:

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

private void dispatchImageGalleryIntent() {

    Intent galleryIntent = new Intent(Intent.ACTION_PICK,
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    try {
        startActivityForResult(galleryIntent, REQUEST_CODE_IMAGE_GALLERY);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Тогда в onActivityResult

 if (requestCode == REQUEST_CODE_IMAGE_GALLERY){
    if (resultCode == RESULT_OK){
         Uri fileuri = intent.getData();
    }
 }

Используйте fileUri, чтобы открыть изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...