Android mkdirs() 不工作

2024-03-13

我正在开发我的第一个 Android 应用程序,在尝试创建目录来保存录制的视频文件时遇到了问题。

我的主要活动有一个方法buttonOnClickRecord调用使用 android 相机的意图,我还在这个方法调用期间创建了一个文件,并且我正在调用mkdirs()方法来创建存储文件的目录。

我也实施了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />在我的清单中。

public void buttonOnClickRecord(View v){
        mediaFile =
                new File(Environment.getExternalStorageDirectory().getAbsolutePath()
                        + "/NewDirectory/myvideo.mp4");
        mediaFile.mkdirs();

        Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {

            Uri videoUri = Uri.fromFile(mediaFile);
            takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
            startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
        }
    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {

            Toast.makeText(this, "Video saved to:\n" +
                    data.getData(), Toast.LENGTH_LONG).show();
        } else if (resultCode == RESULT_CANCELED) {


  Toast.makeText(this, "Video recording cancelled.",
                Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(this, "Failed to record video",
                Toast.LENGTH_LONG).show();
    }
}

如果我删除/NewDirectory/视频文件保存到 SD 卡的根目录,我从我的手机收到一条影响该影响的消息onActivityResult method.

但随着/NewDirectory/添加我将视频保存到:content:://media/external/video/media/15625

the mediaFile.mkdirs();没有创建目录。

我哪里出错了?


您正在尝试创建一个名为的目录myvideo.mp4.

mediaFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
                        + "/NewDirectory/myvideo.mp4");
mediaFile.mkdirs();

应该

File(Environment.getExternalStorageDirectory(), "NewDirectory");
mediaFile.mkdirs();

或更好

mediaFile = new File(getExternalCacheDir(), "NewDirectory");
mediaFile.mkdirs();

Here http://developer.android.com/reference/android/content/Context.html#getExternalCacheDir()你可以找到以下文档getExternalCacheDir()

请注意,不再允许在 SD 卡的根目录上写入 Kitkat 内容。

编辑:文件的路径应该是:

mediaFile = new File(getExternalCacheDir(), "NewDirectory");
File file = new File(mediaFile, "myvideo.mp4");
Uri videoUri = Uri.fromFile(file);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android mkdirs() 不工作 的相关文章

随机推荐

  • 在 Android 上录制视频时添加叠加

    我想在我的 Android 设备中通过摄像头录制视频 我需要在录制的电影上添加叠加图像 在 iOS 中我会使用GPUImage https github com BradLarson GPUImage 在Android中我发现Android
  • Android 无法接收组播数据包

    我正在玩一点多播套接字 我编写了一个向 Android 客户端发送消息的服务器 到目前为止 客户端应该只记录收到的消息 我注意到我的设备上没有收到多播数据包 这是服务器的代码 在电脑上运行 public class MulticastSer
  • 如何断言 std::mutex 是否被锁定?

    使用 GCC 4 8 2 在 Linux Debian Sid 64 位上 或 GCC 4 9 如果可用 在 C 11 中 我有一些互斥体 std mutex gmtx actually it is a static member in s
  • Django Sphinx 自动模块——基础知识 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个包含多个大型应用程序的项目 其中设置和应用程序文件是分开的 目录结构是这样的 项目名 init py apps init py
  • 是否有从 inputText 到 URL 的标准 JSF 转换器?

    我正在尝试转换inputText to java net URL在 JSF 页面中
  • FLAGS/EFLAGS 是破坏列表的“CC”(条件控制)的一部分吗?

    这是后续扩展汇编器中的 qm 是什么 https stackoverflow com questions 21516852 what is qm in extended assembler 使用时RDRAND 它设置 或取消设置 进位标志
  • 适用于 Windows 的 Python 服务存在一些问题

    我已经检查了至少几十个与我类似的案例 但仍然没有找到解决方案 我希望有人能提供一些线索 这里一定有我遗漏的东西 我正在使用Python3 6制作Windows服务 如果该服务未运行 则必须运行 exe文件 这是 py import win3
  • JAVA_HOME 和 PATH 已设置,但 java -version 仍显示旧版本

    我正在使用 Linux Mint Cinnamon 14 我已经设置了 JAVA HOME and PATH环境变量在 profile如下 export JAVA HOME home aqeel development jdk jdk1 6
  • 使用 Podman 连接到 VPN

    有了这个Dockerfile FROM fedora 30 ENV LANG C UTF 8 RUN dnf upgrade y dnf install y openssh clients openvpn slirp4netns dnf c
  • java 计算字符串中的空格数

    我写了一个程序 需要String作为用户输入并显示字母 数字和的数量white spaces 我使用以下代码编写了代码Tokenizer class 它计算字母和数字 但忽略了white spaces 有任何想法吗 import java
  • 如何找到贝塞尔曲线的中点?

    我想制作一条 命名 贝塞尔曲线 我希望它是一个单词命名的 这样我就不必担心自动换行 我通过P5制作贝塞尔曲线bezier sx sy c1x c1y c2x c2y ex ey 函数 我希望在贝塞尔曲线的中间显示一个字符串 但我不知道如何找
  • 获取双动画的当前值

    我有一个故事板 我正在其中使一个矩形向上移动 就像 MPH 汽车仪表中的针一样 所以 我让它从 0 到 60 我希望能够在它变化时获得它的当前值 这样我就可以使用该值来制作数字仪表 如何获取双动画从开始到结束的当前值 我有这样的事情 Dou
  • 如何获得两个集合的交集,同时不仅通过引用而且还通过它们的相同结构和条目识别相等的集合值/项目?

    我有两个交易两个Set实例 const set1 new Set name a name b lastname bb name c name d const set2 new Set name b name d 集合中的任何对象都将具有多个
  • 如何在 heroku 上启动 Python SimpleHTTPServer?

    我想在heroku 上启动Python HTTPServer 请注意 这不是 Python 框架 代码片段附在下面 我如何才能在 Heroku 上启动此服务器 我可以在本地计算机上运行该服务器 但我希望它部署在 Heroku 上 请提供见解
  • Web 应用程序作为服务自动更新,无需启动器

    如果应用程序是没有启动器的 Web 应用程序即服务 install4j 中的自动更新功能是否有效 我尝试了网络资源中提到的许多方法 但没有成功 请帮忙 我正在使用 install4j Windows 版本 6 1 6 编辑1 英戈 凯格尔
  • Bootstrap 4 - Scrollspy 不起作用

    我已经按照BS4中如何使用Scrollspy的文档进行操作 但它不起作用 那么我该如何解决它 我的身体有posistion relative 这是我的身体标签 这是导航栏的 HTML
  • 对 data.frame 或矩阵中的行求和

    我有一个非常大的数据框 其中行作为观察值 列作为遗传标记 我想创建一个新列 其中包含使用 R 的每个观察的选定列数的总和 如果我有 200 列和 100 行 那么我希望创建一个有 100 行的新列 其中包含第 43 至 167 列的总和 这
  • 异步套接字 - 处理错误的 socket.AcceptAsync 值

    Socket 类有一个方法 AcceptAsync 它返回 true 或 false 我原以为 false 返回值是一个错误条件 但在 Microsoft 为异步套接字提供的示例中 它们在检查失败后同步调用回调函数 如下所示 public
  • 如何制作一个钝角的按钮?

    如何制作一个钝角的按钮 我希望发生这样的事 我就这样来到这里 我的代码 Fiddle https jsfiddle net soledar10 nLt9qd5s box sizing border box btn display inlin
  • Android mkdirs() 不工作

    我正在开发我的第一个 Android 应用程序 在尝试创建目录来保存录制的视频文件时遇到了问题 我的主要活动有一个方法buttonOnClickRecord调用使用 android 相机的意图 我还在这个方法调用期间创建了一个文件 并且我正