【问题标题】:Pick any file using intent in android在android中使用意图选择任何文件
【发布时间】:2017-08-28 06:37:03
【问题描述】:

我正在使用以下方法调用选择任何文件,但它不能正常工作。

private void fileIntent(int file)
    {
        if ((ActivityCompat.checkSelfPermission(ICShowFileCabinetDetails.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, file);
        } else {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("*/*");
            startActivityForResult(Intent.createChooser(intent, "Select File"), file);
        }

    }

清单中设置了以下权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

OnActivtyresult

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 if (requestCode == SELECT_FILE && data != null) {
            try {
                mProPic = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData());

                Uri selectedImage = data.getData();

                String[] filePathColumn = {MediaStore.Images.Media.DATA};

                Cursor cursor = getContentResolver().query(selectedImage,
                        filePathColumn, null, null, null);
                cursor.moveToFirst();
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                String picturePath = cursor.getString(columnIndex);

//                String filename = selectedImage.getLastPathSegment();

                String[] filenames = picturePath.split("\\/");


                int count = filenames.length;
                String name = filenames[count - 1];


                imagepickerselected = 1;
                UploadIamgeinServer(1, name);

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
}

每当我单击以在按钮单击中选择文件时,选择打开的文件。但是除了图像之外,所有文件都显示为隐藏,单击不起作用。 如果没有方法,按钮单击工作正常。如果有人在代码中发现错误,请告诉我。

谢谢

【问题讨论】:

  • 你能更新你的日志吗?你的安卓版本是什么。你在else给出意图
  • 请发布日志?
  • 抱歉朋友问题已更新。应用程序没有崩溃。请参考图片附件。
  • 按照我的回答你可以使用你的文件扩展名而不是 xls
  • @Hasmukhkachhatiya 它仅适用于 excel 文件,对吗?我的要求是选择任何文件。

标签: android intentfilter filepicker


【解决方案1】:

试试这个代码,我的代码只用于 .xls 使用你的。 或者在清单文件中添加读写权限

oncreate 声明权限

 if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
        } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},23
            );
        }
    }

单击你的按钮编写此代码

path= String.valueOf(Environment.getExternalStorageDirectory());
                File file = new File(path);
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setDataAndType(Uri.fromFile(file), "application/vnd.ms-excel");

                try {
                    startActivityForResult(pdfOpenintent.createChooser(intent, "Select file"), 0);                }
                catch (ActivityNotFoundException e) {

                }

onactivityresult yud 获取文件路径

public void onActivityResult(int requestCode, int resultCode, Intent result){
        if (resultCode == RESULT_OK){
            if (requestCode == 0) {
                Uri data = result.getData();

                else{
                    //  CommonMethods.ShowMessageBox(CraneTrackActivity.this, "Invalid file type");
                    Toast.makeText(Import_act.this,"Wrong File Selected ", Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

【讨论】:

    【解决方案2】:

    我认为你应该像这样添加 intent.addCategory(Intent.CATEGORY_OPENABLE); .有关更多信息,请访问此链接,Select File from file manager via Intent。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多