【问题标题】:Titanium - Android external storage - create new directory and then write files into itTitanium - Android 外部存储 - 创建新目录,然后将文件写入其中
【发布时间】:2016-09-13 05:22:28
【问题描述】:

我们不能在Android的外部SD卡(不是设备的内部存储器)上简单地以编程方式创建新目录,我们不能在SD卡上写入文件吗?

Titanium 是否受到限制,即使在使用 Ti.Filesystem.externalStorageDirectory 之后也总是将文件写入内部存储器?

曾经能够在 Android 的 SD 卡上以编程方式创建新目录的人可以在这里写下答案,或者没有人需要在外部 SD 卡上写东西吗?

【问题讨论】:

    标签: android filesystems titanium titanium-mobile appcelerator-titanium


    【解决方案1】:

    您可以使用System 类来获取存储变量,如下所示

    要获得内部 SD 卡,您可以使用

    String extStore = System.getenv("EXTERNAL_STORAGE");
    File f_exts = new File(extStore);
    

    要获取您可以使用的外部 SD 卡

    String secStore = System.getenv("SECONDARY_STORAGE");
    File f_secs = new File(secStore);
    

    您可以选择在哪里创建文件夹以及使用哪个文件夹。

    编辑

    Environment.getExternalStorageDirectory()详情

    • 返回主要的共享/外部存储目录。
    • 如果该目录已由用户安装在其计算机上、已从设备中删除或发生了其他问题,则该目录当前可能无法访问。您可以使用 getExternalStorageState() 确定其当前状态。

    注意:不要被这里的“外部”一词所迷惑。最好将此目录视为媒体/共享存储。它是一个文件系统,可以保存相对大量的数据,并且在所有应用程序之间共享(不强制执行权限)。传统上这是一张 SD 卡,但它也可以作为设备中的内置存储实现,不同于受保护的内部存储,并且可以作为文件系统安装在计算机上。

    来自Environment的参考

    希望对您有所帮助。

    【讨论】:

    • 感谢您的回答...但我的问题是针对 Titanium SDK 的。我将编辑问题。
    【解决方案2】:

    尝试在 sdcard 中创建文件夹和文件

    File localFile = new File(Environment.getExternalStorageDirectory(),"/data/create_new_folder_name/");
                if (!localFile.exists()) {
                    localFile.mkdir();
                }
                try{
                    File gpxfile = new File(localFile, "yourfilename.xyz");
                    FileWriter writer = new FileWriter(gpxfile,true);
                    writer.append("your file text");
                    writer.flush();
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    

    manifest.xml 权限

     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    【讨论】:

    • Environment.getExternalStorageDirectory() 并不总是返回 sdcard 路径。在某些设备上,它返回内部存储路径。我不推荐这个。
    • 阅读this question中未接受的答案
    • 但是你的设备找到了 sdcard den 首先创建目录到 sdcard 并且没有找到 den 内部存储
    • 有些设备有两个存储设备,sdcard和sdcard-ext,Environment.getExternalStorageDirectory()返回sdcard是内部存储,即使设备插入了外接卡。
    • 我已经在设备上进行了测试。前任。两个设备都是 sdcard 和内部 1.device android 5.1 和存储路径 storage/sdcard0 是外部和 .../sdcard1 我的代码在 sdcard0 上创建目录 2.device android 4.1 是存储路径 storage/sdcard0 和 ext-sdcard 并创建目录 ext -SD卡
    【解决方案3】:

    使用存储访问框架在 micro SD 卡上进行写入。谷歌 ACTION_OPEN_DOCUMENT_TREE 和 ACTION_OPEN_DOCUMENT。

    除此之外,您还可以在 micro SD 卡上的一个应用程序特定目录中以正常方式写入。查看 getExternalFilesDirs() 返回的第二个条目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      相关资源
      最近更新 更多