用于图片上传的Android文件选择器输入类型

时间:2016-05-22 15:18:12

标签: android filechooser

打开filechooser对我来说是个大问题,对于很多其他人来说....有一个完整的解决方案来处理android中的输入类型?上面的代码适用于版本3.0+和4.1 ...不适用于其他版本比4.1更多...试图寻找解决方案但没有成功的几周

   // For Android 3.0+
           public void openFileChooser( ValueCallback uploadMsg, String acceptType ) {
           mUploadMessage = uploadMsg;
           Intent i = new Intent(Intent.ACTION_GET_CONTENT);
           i.addCategory(Intent.CATEGORY_OPENABLE);
           i.setType("*/*");
           MyWb.this.startActivityForResult(
           Intent.createChooser(i, "File Browser"),
           FILECHOOSER_RESULTCODE);
           }

        //For Android 4.1
           public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
               mUploadMessage = uploadMsg;  
               Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
               i.addCategory(Intent.CATEGORY_OPENABLE);  
               i.setType("image/*");  
               MyWb.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MyWb.FILECHOOSER_RESULTCODE );

           }

1 个答案:

答案 0 :(得分:0)

以下方法是从文件中选择图像的更常规方法。意图使用onActivityResult()来检索用户选择的内容。

首先创建意图。
// Creates an Intent to pick a photo Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 然后执行intent:
// ARGS: the intent, a key to access later startActivityForResult(i, 1);

您现在必须设置onActivityResult(int requestCode, int resultCode, Intent data)(详细说明here)。 以下是一些示例代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
        Uri selectedImage = data.getData();
        try {
            // Do whatever you want with this bitmap (image)
            Bitmap bitmapImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);
            Log.i("Image Path", selectedImage.getPath());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

将方法直接放入您的班级。您现在可以使用收到的Bitmap执行任何操作。