|
|
本帖最后由 莫尔12 于 2023-9-23 00:14 编辑
没看的必看(获取访问权限的关键教程,也包含此教程所调用的类): 上一篇
这篇教程我打算改用AndroidIDE了(你用AIDE也是没问题的,这里还是推荐使用AIDE)
当你阅读并按照上一篇教程复刻工程后,并且有一定的Android开发基础,你就可以开始阅读本篇教程(你必须继上一篇教程的工程继续开发)。
相信你已经会使用AIDE创建新的按钮了,所以这里就不再详细放图演示,不会的去看上一篇。
1.创建一个新的按钮,用于调用类
调用方法:- startForRead(MainActivity.this);
复制代码
2.在主活动中定义变量:
你可以把上一篇工程的uri改为:- public static Uri uri = Uri.parse("content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fdata");
复制代码
3.在主活动中依次添加类:
- private static void readFromFile(final View v, final Activity activity, Uri uri) {
- final DocumentFile dir = DocumentFile.fromTreeUri(activity, uri);
- final DocumentFile[] files = dir.listFiles();
- boolean xmlFileDetected = false;
- List<DocumentFile> xmlFiles = new ArrayList<>();
- //遍历文件,检查是否为txt文件
- for (DocumentFile file : files) {
- if (file.isFile() && file.getName().endsWith(".txt")) {
- xmlFiles.add(file);
- xmlFileDetected = true;
- }
- }
-
- if (!xmlFileDetected) {
- View rootView = activity.findViewById(android.R.id.content);
- Snackbar.make(rootView, "没有选项可供选择", Snackbar.LENGTH_LONG).show();
- return;
- }
- final String[] fileNames = new String[xmlFiles.size()];
- for (int i = 0; i < xmlFiles.size(); i++) {
- fileNames[i] = xmlFiles.get(i).getName();
- }
- //弹出一个对话框让用户选择文件名
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
- builder.setTitle("选择要读的文件名");
- builder.setItems(fileNames, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- //获取选择的文件
- DocumentFile file = xmlFiles.get(which);
- if (file != null && file.getName().endsWith(".txt")) {
- try {
- //输入流 - On
- InputStream is = activity.getContentResolver().openInputStream(file.getUri());
- //读内容
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
- StringBuilder content = new StringBuilder();
- String line;
- while ((line = reader.readLine()) != null) {
- content.append(line).append("\n");
- }
- reader.close();
- is.close();
- //弹对话框,显示文件内容
- AlertDialog.Builder builder2 = new AlertDialog.Builder(activity);
- builder2.setTitle(file.getName() + " 的内容");
- TextView textView = new TextView(activity);
- textView.setText(content.toString());
- builder2.setMessage(content.toString());
- builder2.setNegativeButton("关闭", null);
- builder2.show();
- } catch (IOException e) {
- Toast.makeText(activity, "error!", Toast.LENGTH_SHORT).show();
- e.printStackTrace();
- }
- }
- }
- });
- builder.setNegativeButton("取消", null);
- builder.show();
- }
复制代码
- @RequiresApi(api = Build.VERSION_CODES.O)
- public static void startForRead(Activity activity) {
- if (checkPermission(activity, uri)) {
- View view = null;
- readFromFile(view, activity, uri);
- } else {
- requestPermission(activity, uri);
- }
- mode = 1;
- }
复制代码
如果遇到确实库等问题就用AIDE自动导入功能
好了最后求助一下,我看见论坛和b站有人用termux装了个as并且还可以正常运行,我装了后不是提示adb未找到就是gradle配置有问题 ,哪位大佬可以发一篇完整的教程啊啊啊啊啊啊啊
最后放效果
如果data目录有txt文件
已经成功读出来了
如果data目录没有txt文件
会提示这个
完成,如果还有问题建议私信找我
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|