无法在Android中获取文件

时间:2019-05-05 10:21:04

标签: android file parsing

我正在尝试从设备中解析一个简单的xls文件,这是我到目前为止编写的代码,但是我无法弄清为什么我的应用程序找不到我的文件。

这里是我到目前为止编写的代码

在resultActivity中:

File sdcard = Environment.getExternalStorageDirectory();
                    File file = new File(sdcard, data.getData().getPath());
                    ParseFileAggiornamentoAsyncTask asyncTaskLetturaFile = new ParseFileAggiornamentoAsyncTask(MainActivity.this,file);
                    asyncTaskLetturaFile.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

除其他事项外,asynctask中有一个类似file.exist()的控件,该控件始终返回false,因此我无法读取它和其他内容。

我做错了什么?

评论更新

这是触发我的startActivityForResult

的代码
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                        MainConstant.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
            }else {
                Intent fileintent = new Intent(Intent.ACTION_GET_CONTENT);
                fileintent.setType("*/*");
                fileintent.addCategory(Intent.CATEGORY_OPENABLE);
                try {
                    startActivityForResult(Intent.createChooser(fileintent, "Select a File to Upload"), PICKFILE_RESULT_CODE);
                } catch (ActivityNotFoundException e) {
                    Toast.makeText(MainActivity.this, MainActivity.this.getString(R.string.generic_error), Toast.LENGTH_LONG).show();
                    Log.e("tag", "No activity can handle picking a file. Showing alternatives.");
                }
                return true;
            }

1 个答案:

答案 0 :(得分:0)

可能与清单相关,请参见https://developer.android.com/training/data-storage/files

您可能需要在清单中添加以下行

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

如果您已经拥有那些文件,那么使用文件的方法与其他文章中的相同。

请参见How do I check if a file exists in Java?