如何在Android的默认图像查看器中打开图像

时间:2018-07-05 02:00:22

标签: java android image

我使用以下代码打开默认文件管理器并找到图像,但是当我单击图像时,活动将关闭。

我可以在“活动”的顶部选择文件,我看到单词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 :(得分:1)

尝试使用此代码

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

编辑:

首先使用打开画廊的方法选择图像文件

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打开图像。

答案 1 :(得分:0)

最后我开始工作了。

1。启动文件管理器以选择文件(在我的情况下是图像文件)

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);

    }
}