我正在尝试将'EditText'设置为简单txt文件的内容。在查看开发者页面后,我偶然发现了一些获取照片的代码。我编辑了我认为适合我的需求,但它不起作用:
private void importText(){
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("text/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0 && resultCode == RESULT_OK) {
String textContent = data.getDataString();
mEditText.setText(textContent);
}
}
它的作用是将EditText
中的文件位置的字符串名称放在其中,而不是它的内容。我的应用程序现在只支持API 19,所以我认为我可以将其用作功能。使用ACTION_OPEN_DOCUMENT
是否可以使用此功能,还是需要执行其他操作?
答案 0 :(得分:1)
您需要按照documentation中的说明从Uri中检索输入流。 (第34节;获取输入流")。
答案 1 :(得分:0)
使用以下方法读取数据:
public static String readTextFromUri(Context context, Uri uri) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
try (InputStream inputStream =
context.getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(
new InputStreamReader(Objects.requireNonNull(inputStream)))) {
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
}
return stringBuilder.toString();
}
并从onActivityResult方法的给定意图中获取uri:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0 && resultCode == RESULT_OK) {
Uri uri = data.getData();
String myText = readTextFromUri(yourContext , uri);
}
}