Intent.ACTION_GET_CONTENT 选择后读取文本文件

Read text file after chossing by Intent.ACTION_GET_CONTENT

我正在尝试通过打开文件资源管理器 select 文本文件,然后读取 selected 文件。 我尝试了很多解决方案。最后一个是这个代码

public void btnRead_Click(View view) {
    Intent chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
    chooseFile.setType("text/plain");
    startActivityForResult(chooseFile, 1);
}

@Override
protected void onActivityResult(int requestedCode, int resultCode, Intent data) {

    if (requestedCode == 1) {
        if (resultCode == RESULT_OK) {

            File file = new File(data.getDataString());

            StringBuilder text = new StringBuilder();

            try {
                BufferedReader br = new BufferedReader(new FileReader(file));
                String line;

                while ((line = br.readLine()) != null) {
                    text.append(line);
                    text.append('\n');
                }
                br.close();
            }
            catch (IOException e){}

            textView = (TextView) findViewById(R.id.textView);
            textView.setText(text);

        }

    }
}

提前致谢

我在这里找到了解决方案:

密码是:

public static int PICK_FILE = 1;

public void btnRead_Click(View view)
{
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("text/plain");
    startActivityForResult(intent, PICK_FILE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_FILE)
    {
        if (resultCode == RESULT_OK)
        {
            Uri uri = data.getData();
            String fileContent = readTextFile(uri);
            Toast.makeText(this, fileContent, Toast.LENGTH_LONG).show();
        }
    }
}

private String readTextFile(Uri uri)
{
    BufferedReader reader = null;
    StringBuilder builder = new StringBuilder();
    try
    {
        reader = new BufferedReader(new InputStreamReader(getContentResolver().openInputStream(uri)));

        String line = "";
        while ((line = reader.readLine()) != null)
        {
            builder.append(line);
        }
        reader.close();
    }
    catch (IOException e) {e.printStackTrace();}
    return builder.toString();
}