ionic externalRootDirectory 无法写入 SD 卡

2024-02-09

我一直在尝试使用 IONIC 中的“cordova-plugin-file”插件写入 Android 设备上的(可移动)SD 卡,但没有成功。

该文档指定了

externalRootDirectory

为“Android:外部存储(SD 卡)根”。

但是,当我写入该目录时:

this.file.resolveDirectoryUrl( this.file.externalRootDirectory)
.then( (data)=>{
  result += "\n" + "resolveDirectoryUrl";
  newBasePath = data.nativeURL;
  this.file.createDir(newBasePath, newDirName, true)
  .then( ()=>{
    result += "\n" + "createDir";
    this.file.createFile(newBasePath, newFilePath, true)
    .then( ()=>{
      result += "\n" + "createFile";
      this.file.writeFile(newBasePath, newFilePath, this.thisRouteFile,  {append:true})
      .then( () => {
        result += "\n" + "writeFile OK";
      });
    });
  });
});

文件始终会写入内部存储器或仿真器,而不是可移动 SD 卡。

关于这个问题有很多讨论,有些人引用

  <preference name="AndroidPersistentFileLocation" value="Compatibility" />

但我没有找到解决办法。

是否可以写入可移动 SD 卡?


TL;DR:使用获取外部SD卡详细信息() https://github.com/dpa99c/cordova-diagnostic-plugin#getexternalsdcarddetails函数来自科尔多瓦诊断插件 https://github.com/dpa99c/cordova-diagnostic-plugin#getexternalsdcarddetails.

返回的“外部目录”cordova-plugin-file对应于不可移动(内部)存储。 这是因为这些模拟位置保证始终存在于所有 Android 设备上,而并非所有硬件供应商都支持外部/可移动 SD 卡位置,它们是制造商/Android 版本特定的,并且如果外部 SD 卡可能不存在未插入读卡器。

例如,在运行 Android 7.1.1 的 Samsung Galaxy S4 上:

  • cordova.file.externalRootDirectory回报file:///storage/emulated/0/
  • cordova.file.externalApplicationStorageDirectory回报file:///storage/emulated/0/Android/data/cordova.plugins.diagnostic.example/

它们是不可移动内部存储上的文件路径。

相比之下,获取外部SD卡详细信息() https://github.com/dpa99c/cordova-diagnostic-plugin#getexternalsdcarddetails函数来自科尔多瓦诊断插件 https://github.com/dpa99c/cordova-diagnostic-plugin#getexternalsdcarddetails返回可移动外部 SD 卡的位置和详细信息。

例如,在运行 Android 7.1.1 的 Samsung Galaxy S4 上,它返回:

[{
    "path": "/storage/4975-1401/Android/data/cordova.plugins.diagnostic.example/files",
    "filePath": "file:///storage/4975-1401/Android/data/cordova.plugins.diagnostic.example/files",
    "canWrite": true,
    "freeSpace": 16254009344,
    "type": "application"
}, {
    "path": "/storage/4975-1401",
    "filePath": "file:///storage/4975-1401",
    "canWrite": false,
    "freeSpace": 16254009344,
    "type": "root"
}]

它们是外部可移动存储上的文件路径。

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

ionic externalRootDirectory 无法写入 SD 卡 的相关文章

  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • 在 Android Studio 中,为什么我必须在模拟器中单击“运行应用程序”两次才能启动应用程序?

    在 Android Studio 中 当我按播放按钮在 Android 模拟器上安装并运行应用程序时 大约 5 10 秒后 我在屏幕底部收到一条消息 显示 安装成功 但应用程序实际上并未运行在模拟器上 我必须再次按下播放按钮 这是非常令人沮
  • CardView 圆角获得意想不到的白色

    When using rounded corner in CardView shows a white border in rounded area which is mostly visible in dark environment F
  • 来自 HTML5 的 Phonegap Bonjour/Zeroconf 或 Websocket IP 发现

    我正在尝试实现一个 Phonegap HTML5 应用程序 该应用程序连接到 Websocket 服务器 在嵌入式设备中运行 也有 Bonjour 服务 以在家庭网络内交换数据 我想知道使用 Phonegap 检测服务器 IP 的最佳方法
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • Protractor+AngularJS+Jasmine - 测试按住项目

    AngularJS 和 Protractor 非常新 但我认为到目前为止我正在朝着正确的方向前进 我的网站有一个项目列表 当您单击该项目并按住 X 秒时 它会打开一个模式窗口 我如何在 Protractor Jasmine 中模拟这种行为
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 仅使用 CSS Flexbox 控制垂直堆叠元素的顺序

    我正在尝试使用CSS 灵活盒子布局模块 http www w3 org TR css3 flexbox 控制元素渲染的顺序 这是一些 HTML 示例 以及fiddle http jsfiddle net jbeall dnew63of 6
  • 使用现有 Apple 帐户在 iTunes Connect 中添加 Sandbox Tester

    我正在尝试在 iTunes Connect 中添加沙盒测试程序 但我收到这个错误 您输入的电子邮件地址已经属于现有的 Apple 帐户 请再试一次 我的问题是如何使用现有 Apple ID 帐户添加沙盒测试人员 迪米塔 内斯托罗夫更新202
  • 在Python中将换行符写入csv

    我想通过将新的内容行 包括换行符 写入 csv 文件来结束 for 循环的每次迭代 我有这个 Set up an output csv file with column headers with open outfile csv w as
  • 在 C# 中使数据集线程安全

    使数据集在写入时线程安全的最佳模式是什么 我能通过谷歌搜索找到的最好的是 实现带锁的包装层 但乍一看这似乎相当混乱 有人可以推荐 指出一个好的解决方案吗 这似乎是一个已经在某个地方得到解决的问题 编辑 我还需要将数据集绑定到 ui 网格 这
  • 如何使用 Artifactory 查询语言查找最新的工件版本?

    到目前为止 我使用 Artifactory REST API 来确定 Maven 工件的最后一个版本 最后一个快照 groupId and artifactIid api search latestVersion g groupid a a
  • 无法加载此类文件 -- capistrano/setup (LoadError)

    我正在关注https gorails com deploy ubuntu 16 04 https gorails com deploy ubuntu 16 04 最初我有一个版本的 capistrano 3 8 1 我的问题最初是 nico
  • 为什么在 Win 64 上安装 Number::Format 失败?

    我正在尝试安装Number Format https metacpan org pod Number Format在 Windows 上与 Padre 一起使用 cpanm Number Format 我收到以下错误 我怎样才能解决这个问题
  • 使用 .NET 生成具有给定扩展名的唯一临时文件名[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 net 创建具有特定扩展名的临时文件 https stackoverflow com questions 581570 how can i create a temp file with a
  • 扫描仪NoSuchElementException

    我编写了一个程序 要求输入 3 个整数来输出三角形类型 一切都运行并编译成功 但是 似乎在要求用户查看是否要再次循环的部分 在线编译器输出错误 线程 main 中的异常 java util NoSuchElementException 在
  • Travis ci 上的 Python3 模块导入失败

    我制作了一个 Python 3 脚本来测试我的项目 剧本 https github com anestv server test有这样的结构 main py myRequest py external requests init py ma
  • Android 检查 EditText 中的空格

    我在 Android 中编辑文本时遇到问题 我有一个名为 Username 的字段 我希望每当有人写一个带有空格的用户名时 例如 Gaurav Arora 然后 在按下登录按钮时 它应该引发一个祝酒词或错误 我这样做了 我只是在文本观察器的
  • Android 如何从 SharedPreference 设置 EditTextPreference 的默认值?

    这次在同一个项目中 我面临一个稍微具有挑战性的问题 在 res xml 文件夹中的 settings xml 文件中
  • 从文件中删除扩展名[重复]

    这个问题在这里已经有答案了 可能的重复 如何从字符串中删除扩展名 只有真正的扩展名 https stackoverflow com questions 2395882 how remove extension from string onl
  • Play框架和OSGI

    是否可以将 Play 框架与 OSGI 集成以创建可插入组件 有人尝试过吗 如果您的意思是 使用 OSGi 创建 Play 模块 那么不 不支持它 如果您的意思是 将 Play 部署为 OSGi 模块 那么不 不支持它 公平地说 没有理由推
  • Ajax 加载后 AddThis 不起作用

    我有 AddThis js 用于将详细信息添加到日历的书签 这在页面加载时工作正常 但我使用 ajax 加载并替换 html 进行了一些过滤 之后 AddThis 按钮不显示 这是我的 ajax 代码 document ready func
  • 如何使用 jQuery 添加 DOM 元素?

    我有一个当前用来显示隐藏 div type 的函数 我怎样才能修改这段代码 而不是在隐藏的div中淡出 我可以将新的 div 添加到 DOM jQuery function Add Answer jQuery add answer clic
  • 将文本显示到另一个类的标签 - JFrame

    我有一个 GUI 屏幕 里面有一个标签 我现在想用文本设置标签 如下所示 Test 但它没有得到更新 我认为以下代码中有错误 我在 try 块中重新创建了 FrameTest 的新对象 FrameTest frame new FrameTe
  • 如何让puppeteer通过socks5代理工作?

    我购买了socsk5的代理服务器版本 所有手册中都有相同的示例 const browser await puppeteer launch headless true ignoreHTTPSErrors true defaultViewpor
  • 更改 Qt5 中 QGraphicsScene/View 中的像素图位置

    我有一个普通的 QGraphicsView QGraphicsScene 我想要做的就是将 QPixmap png 加载到图形并手动设置该 QPixmap 图像的位置 我找到了解决方案 但它们不适用于 Qt5 关于如何在 Qt5 上实现这一
  • ionic externalRootDirectory 无法写入 SD 卡

    我一直在尝试使用 IONIC 中的 cordova plugin file 插件写入 Android 设备上的 可移动 SD 卡 但没有成功 该文档指定了 externalRootDirectory 为 Android 外部存储 SD 卡