要将.txt文件打开到EditText中,可以使用以下步骤:
首先,在AndroidManifest.xml文件中添加读取外部存储权限:
然后,在Activity中添加以下代码:
private static final int READ_REQUEST_CODE = 42;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// 如果没有权限,请求权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
READ_REQUEST_CODE);
} else {
// 如果有权限,执行打开文件操作
openFile();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == READ_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 如果权限被授予,执行打开文件操作
openFile();
} else {
// 如果权限被拒绝,显示一个提示对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("权限被拒绝")
.setMessage("无法打开文件,请授予读取外部存储权限")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// 请求权限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
READ_REQUEST_CODE);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// 关闭应用
finish();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
}
private void openFile() {
// 创建文件选择器
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
// 启动文件选择器
startActivityForResult(intent, READ_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == READ_REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) {
try {
Uri uri = data.getData();
InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
// 读取文件内容
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append("\n");
}
// 显示文件内容到EditText中
EditText editText = findViewById(R.id.edit_text);
editText.setText(stringBuilder.toString());
reader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
以上代码将在用户授予读取外部存储权限后,打开文件选择器,选择.txt文件并将其内容显示在EditText中。如果用户拒绝权限,将显示一个对话框提示用户授予权限。