【问题标题】:Android file chooser input type for image upload用于图像上传的 Android 文件选择器输入类型
【发布时间】:2016-05-22 15:18:11
【问题描述】:

打开文件选择器对我来说是一个大问题,也许对许多其他人来说......有一个完整的解决方案来处理 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 );

           }

【问题讨论】:

    标签: android filechooser


    【解决方案1】:

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

    首先创建意图。
    // Creates an Intent to pick a photo Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 然后执行意图:
    // 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 为所欲为。

    【讨论】:

    • 感谢您的回答,但对于 android 版本 4.1+,文件选择器未打开....
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2011-10-07
    • 2014-03-11
    • 1970-01-01
    • 2018-12-27
    • 2020-03-23
    • 2012-02-23
    相关资源
    最近更新 更多