本地文件 phonegap 与在线构建应用程序
Posted
技术标签:
【中文标题】本地文件 phonegap 与在线构建应用程序【英文标题】:Local file phonegap with online building app 【发布时间】:2014-08-21 15:24:25 【问题描述】:我是 phonegap 的新手,我需要知道将文件放在本地文件夹的什么位置以及如何访问它们。我试图用eclipse等在我的电脑上构建我的应用程序,但是要安装的东西太多了,用户变量,命令行......我试过但它不起作用,我不知道问题出在哪里,然后我尝试从build.phonegap.com 构建我的应用程序,它运行良好。我遇到的问题是我需要读取音频文件,我尝试了Audio
对象和Media
对象,但它们不起作用。
我找了解决办法,发现你必须把你的本地文件放在assets/
或者android_assets/
,你需要访问它们,我不知道怎么做
/assets/file.wav
file:///android_assets/file.wav
所以我开始添加assets/
、android_assets/
、audios/
、whatever/
等文件夹,但没有任何效果。
你能告诉我把我的文件放在哪里以及如何访问它们吗? 没有命令行,没有 eclipse... 只是在从 build.phonegap.com 构建应用程序之前手动进行
【问题讨论】:
所有资源媒体放在www文件夹或任何地方,在Android中访问它的路径是“file:///android_asset/www/”。在IOS中你不需要添加完整路径,只需要路径文件:'path from www to'。 请解释一下,我有一个文件 index.html 和一个文件夹 audio 包含我的文件,我需要访问这个文件,我应该创建一个文件夹 android_asset 还是 www ... ??或者我应该保留我的文件夹音频并使用 file://andoird_asset/www/audio/file.wav 访问我的文件 【参考方案1】:这是一个有用的链接,可能会有所帮助:link
你安装了文件插件吗?因为这是它所必需的。如果没有,首先你需要安装它,在项目文件夹的命令行中输入这个命令(不难):
cordova 插件添加 org.apache.cordova.file
根据文件插件文档,存储文件的最佳位置是以下路径:
file:///data/data/app-id/files/files/您的文件夹/您的文件
例如:file:///data/data/com.phonegap.myapp/files/files/audio/file.wav
这是持久的、可读/可写的,操作系统不会清除它并且是私有的。 “使用内部存储器在应用程序的沙箱中进行持久和私有的数据存储”
在您的程序中,您可以这样引用它:cordova.file.dataDirectory
例如,这是我的应用程序中的代码,它从 URL 下载图像并将其放入 HTML 中的图像标记中:
window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem)
var imageURL = "http://example.com/image.jpeg";
var ext = imageURL.substr(imageURL.lastIndexOf('.') + 1); //extension of the image
var relativeFilePath = "images/myimage" + "." + ext;
var ft = new FileTransfer();
ft.download(imageURL, fileSystem.root.toURL() + relativeFilePath, function(entry)
var myImage= "<img src=" + fileSystem.root.toURL() + relativeFilePath + "' id=" + "imageID" + ">";
alert(fileSystem.root.toURL() + relativeFilePath); //kép
$('#imgdiv').html(myImage);
, function(err) alert("Download failure: " + JSON.stringify(err)); );
, function(err) alert("requestFileSystem failure: " + JSON.stringify(err)); );
在此代码中,fileSystem.root.toURL() 指的是 file:///data/data/com.phonegap.myapp/files/files/
而relativeFilePath是我自己创建的,指的是images/myimage.jpeg
(对于需要文件传输插件的下载,可以使用安装
cordova 插件添加 org.apache.cordova.file-transfer 命令)。
我希望这会有所帮助。
【讨论】:
当我运行命令cordova plugin ...
时,它说当前工作目录不是基于cordova 的项目
这里是一个关于必须做什么的链接:link。如果您以这种方式创建了 Phonegap 项目: cordova create hello com.example.hello HelloWorld ,其中 hello 是目录名称,com.example.hello 是您的应用 ID,HelloWorld 是应用显示标题。然后使用 cd hello 命令进入项目文件夹并使用 cordova platform add android 添加 android 平台。这里有你写cordova plugin add org.apache.cordova.file命令。 Doc
没有任何效果,我尝试过通过ui和命令行构建,一切正常,直到应用程序测试,找不到文件
这对我来说是完美的解决方案。非常感谢,找了几个小时。这个解决方案解决了我的问题。非常感谢@spaghetti_code【参考方案2】:
@Khalid 你必须手动创建项目:
project_folder
|___index.html
|___audio_folder
|___any resources or folder
请查看 Phonegap Build 中的文档
编辑1:通过Media对象播放媒体文件
// Get path 'www' in Android
function getPathApp()
return location.href.slice(0,-10);
var media = new Media(getPathApp() + 'audio/file.wav');
// In IOS only need path from audio folder
var media = new Media('audio/file.wav');
media.play();
【讨论】:
好的,那么使用路径是什么??因为从index.html
路径audio_folder/file.wav
不起作用
我做了这一切,但如何访问audio_folder
中的文件是个问题以上是关于本地文件 phonegap 与在线构建应用程序的主要内容,如果未能解决你的问题,请参考以下文章
从 XCode 访问 Mac 上的本地主机? Phonegap 通过 Ajax 与本地 Rails 应用程序通信