Android - 使用意图从手机内存中打开文件

2024-02-20

我正在开发一个应用程序,它将手机中的 .txt 文件作为输入并将其打印在 TextView 上,

public class MainActivity extends AppCompatActivity {
Button button;
Intent intent;private StringBuilder text = new StringBuilder();



private InputStream getResources(String s) {
    return null;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.btn);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("text/plain");
            startActivityForResult(intent, 7);
            Log.v("###", "parent "  + getParent());
        }

    });
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String Fpath = data.getDataString();
  //  final String fileName = ""+Fpath;
    Log.v("###", "yo " +Fpath);

    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case 7:

            if (resultCode == RESULT_OK) {
                setContentView(R.layout.activity_main);


                Log.v("###", "hellow");
                setContentView(R.layout.activity_main);
                BufferedReader reader = null;

                try {

                    reader = new BufferedReader(

             new InputStreamReader(getAssets().open("filename.txt")));
                    //change code
                    // do reading
                    String mLine;
                    while ((mLine = reader.readLine()) != null) {
                        text.append(mLine);
                        text.append('\n');
                    }
                } catch (IOException e) {
                    String PathHolder = data.getData().getPath();
                    Toast.makeText(MainActivity.this, PathHolder, Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                } finally {


                    if (reader != null) {
                        try {
                            reader.close();
                        } catch (IOException e) {
                            //log the exception
                        }
                    }

                    TextView output = (TextView) findViewById(R.id.Txt);
                    output.setText((CharSequence) text);

                }
            }
    }
}
}

一切都很好,但线路

new InputStreamReader(getAssets().open("filename.txt")));

从 Assets 文件夹中获取文件, 帮我从我的手机中获取文件,

资产文件夹中的文件正确打开,但我希望从我的手机中选择它


您可以获取文件路径onActivityResult您从文件管理器中选择的。

 Uri PathHolder = data.getData();

UPDATE

上面的线给你文件的 uri您从存储中选择的。然后你可以轻松地从该 Uri 获取文件。

刚刚忘记了getAssets使用以下方法从文件中读取。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Uri PathHolder = data.getData();
    FileInputStream fileInputStream = null;
    StringBuilder text = new StringBuilder();
    try {
        InputStream inputStream = getContentResolver().openInputStream(PathHolder);
        BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
        String mLine;
        while ((mLine = r.readLine()) != null) {
            text.append(mLine);
            text.append('\n');
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 使用意图从手机内存中打开文件 的相关文章

随机推荐

  • 如何查看k8s部署历史?

    I tried kubectl rollout history deployment my app 它只返回No rollout history found 我认为存在一种方法来获取所有部署历史记录 这将会非常有帮助 参考官方文档 http
  • 该平台不支持 LocalDB

    我正在尝试启动 Net Core 2 0申请于Ubuntu 17 04 我之前在Windows 10上开发过 效果很好 问题是当我跑步时dotnet ef database update我得到下一个例外 System PlatformNot
  • 为 nextjs 项目设置关键 CSS 并删除不需要的 CSS 的正确方法

    我有一个 NextJS 项目设置 gt https github com stefanre1 nextjs setup https github com stefanre1 nextjs setup 我想知道从 Tailwindcss 中删
  • 在 iTunes 中设置 iOS 应用程序语言

    我想在 iTunes 中设置应用程序语言 它总是只显示英语 但我想在 iTunes 中显示两种语言 我不想对应用程序代码进行任何更改 因为我已经按设备语言管理这两种语言 示例图像包含多种语言 如英语 中文 荷兰语和法语 我目前也遇到同样的问
  • 如何在 Visual Studio Code 中关闭保存时的文本格式?

    我不知道为什么我的代码在保存时自动格式化 并且由于某种原因更改了布局 我发现这是由于保存时自动格式化造成的 如何在 Visual Studio Code 中关闭自动保存 对于 Windows 以下是关闭自动完成功能所需遵循的一些基本步骤 S
  • Safari getDisplayMedia 必须从用户手势处理程序调用

    我的网站具有截屏和共享屏幕功能 在 chrome 和 firefox 上一切正常 但在 safari 上我收到错误 必须从用户手势处理程序调用 getDisplayMedia 是否可以从代码本身模拟用户手势 我尝试过使用myButton c
  • ScrollViewReader/scrollTo(_:anchor:) 无法可靠工作

    我已经建立了一个ScrollView其中包含 0 3 个图像和一个多行文本字段VStack 我还添加了一个ScrollViewReader在滚动视图内 并在某些事件发生时使用它滚动到文本字段的底部 用户开始键入 图像集合更改 关键是 有时有
  • 当输入为“???”时,StringUtils isNumeric 返回 true,为什么? [复制]

    这个问题在这里已经有答案了 我正在阅读 commons apache orgisNumeric http commons apache org proper commons lang apidocs org apache commons l
  • MATLAB 中的神经网络,初始权重 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我用 newff 在 MATLAB 中制作了神经网络 当您使用相同的输入和输出对其进行训练时 不同运行的训练结果会有所不同 我知道这种
  • 我想用Python从点云生成网格

    我有来自人体不同部位的点云 比如眼睛 我想做一个网格 我尝试使用 Mayavi 和 Delaunay 但没有得到好的网格 云的点完全混乱 我的点云位于 npz 文件中 使用 Mayavi 然后我想将模型保存在 obj 或 stl 文件中 但
  • 从方法链中使用的临时移出

    我正在尝试做类似的事情 include
  • 是否存在空 URI?

    我正在开发一个解析 URI 的例程 在明显的情况下 有一个空字符串的情况 空字符串是有效输入吗 空字符串的结果 URI 会是什么 空字符串不可能是 URI 这通用 URI 语法 https www rfc editor org rfc rf
  • 防止周末和节假日期间发出 Grafana 警报

    背景 我们正在使用 Grafana 警报 在周末和节假日期间 我们的一些指标会较低 但这实际上没关系 但仅限于那些日子 Problem 在周末和节假日期间 即使系统实际上没问题 我们也会收到来自 Grafana 的警报 Question 我
  • Genshin - 如何打印范围内的所有变量

    很简单 我想打印出 genshi 模板范围内的所有变量 作为调试和发现措施 有办法做到吗 标准Python函数locals http docs python org library functions html locals 返回一个字典
  • 如何从 matplotlib 获取 AxesImages

    所有 我使用这样的代码来绘制图像 import matplotlib pyplot as plt plt imshow array cmap jet plt show 但是 现在我想得到句柄 im of im plt imshow arra
  • 应该学习没有 jQuery 的 angularjs 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是客户端 JavaScript 的新手 在一个网络项目中 我发现了 AngularJS 并使用了一些基础知识 我应该学习 jQuery 还是只
  • laravel nova 隐藏索引页面上的编辑按钮

    如何禁用 nova 索引页面上的编辑 删除按钮并仍然允许在详细信息页面中 如果我将创建一个策略 这将禁用到处的操作 我想允许在详细信息页面中编辑和删除 但只想删除这些按钮从索引 正在做类似的事情 public function update
  • 使用 rvest 抓取时,在缺失值的地方输入 NA

    我想用rvest抓取一个页面 其中包含最近一次会议上演讲的标题和运行时间 然后将这些值组合成一个tibble library tibble library rvest url lt https channel9 msdn com Event
  • 使用动态类型从匿名对象获取值是不好的做法吗?

    注意 我的问题与 ASP Net 无关 我有一个使用 LINQ 与匿名集合绑定的 GridView 我希望在网格中的事件处理程序中从绑定对象获取一个值 该对象无法转换为任何静态类型 因为它的类型是匿名的 为了解决这个问题我使用动态类型来获取
  • Android - 使用意图从手机内存中打开文件

    我正在开发一个应用程序 它将手机中的 txt 文件作为输入并将其打印在 TextView 上 public class MainActivity extends AppCompatActivity Button button Intent