获取图像内容无法打开Gallery文件夹



我正在创建一个图像转换器应用程序,需要用户从设备中选择图像文件,我使用模拟器,当我开始从图库中选择文件时,它会在它们的文件夹中显示图像,但单击文件夹时,它只会重新打开图库,而不是文件夹。这是我的代码

private void showFileChooser() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    try {
        startActivityForResult(
                Intent.createChooser(intent, getString(R.string.selectf)),
                FILE_SELECT_CODE);
    } catch (ActivityNotFoundException ex) {
        // Potentially direct the user to the Market with a Dialog
        Toast.makeText(this, "Please install a File Manager.", 
                Toast.LENGTH_SHORT).show();
    }
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK && resultCode == Activity.RESULT_OK) {
            // Get the Uri of the selected file
            Uri uri = data.getData();
            //Log.d(TAG, "File Uri: " + uri.toString());
            // Get the path
            try {
                Path = getPath(this, uri);
                if(   Path.endsWith("png")  ||  Path.endsWith("gif")   ||    Path.endsWith("jpg")    ||    Path.endsWith("bmp")){
                    startprogress2();
                    progressDialog.onStart();
                    asyncTask = new loadAction();
                    asyncTask.execute();
                }
                else{
                    Toast.makeText(this, R.string.selecti,
                            Toast.LENGTH_SHORT).show();
                }
            }catch (URISyntaxException e) {
                e.printStackTrace();
                failtoloadtoast();
            }catch(Exception e){
                e.printStackTrace();
                failtoloadtoast();
            }
        }else{
            failtoloadtoast();
        }

    super.onActivityResult(requestCode, resultCode, data);
}

请记住,我必须让用户能够从文件管理器中选择图像文件,而不仅仅是图库,因为有些格式不能被图库读取。

这样使用:

意图:

 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("image/*");
             startActivityForResult(intent, 0);

要获取该结果:

   protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
       super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
       switch(requestCode) {
       case 0:
           if(resultCode == RESULT_OK){
               Uri selectedImage = imageReturnedIntent.getData();
               String[] filePathColumn = {MediaStore.Images.Media.DATA};
               Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
               cursor.moveToFirst();
               int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
              //file path of selected image
               filePath = cursor.getString(columnIndex);
               File f = new File(filePath);
               filename= f.getName();
               Toast.makeText(SiteViewFieldCreate.this, "Your Path:"+filePath, 2000).show();
               Toast.makeText(SiteViewFieldCreate.this, "Your Filename:"+filename, 2000).show();
               cursor.close();
           }
           break;
     }
     }

参考。希望这能给你一些解决方案。

最新更新