phonegap之文件下载和打开阅读开发(andriod)

phonegap 提供了文件下载api接口。
DirectoryEntry
FileEntry
FileSystem
FileTransfer
但是没有提供阅读文档的插件,还好phonegap可以提供插件支持
我这里提供一个插件的下载,可以打开各种文档,doc,txt,图片,pdf等等。
以前的插件有版本太低,方法上有了问题,这里我是新修改过的。
下载:文件查看插件
插件的使用方法:
1.拷贝FileOpener.java到你的项目中
2.在插件文件里添加插件引用:
<plugin name="FileOpener" value="com.phonegap.plugins.fileopener.FileOpener"/>
3.拷贝fileopener.js到你的www文件下在你的html页面你们引入js文件。
<script type=”text/javascript” charset=”utf-8″ src=”fileopener.js”></script>
 
下来我们来写下载代码:
在html页面你们添加:
 
<ul id=”pdf”>
<li><span><strong>文件</strong></span><span><strong>状态</strong></span><span><strong>查看</strong></span><span><strong>删除</strong></span></li>
<li><span><a href=”#” onClick=”openpdf(‘dropbox.pdf’)”>文件1</a></span><span><a href=”#” onclick=”downloadFile(‘dropbox.pdf’,1);”>下载</a></span><span><a href=”#” onClick=”openpdf(‘dropbox.pdf’)”>打开</a></span><span><a href=”#” onClick=”removefile(‘dropbox.pdf’,1)”>删除</a></span></li>
<li><span><a href=”#” onClick=”openpdf(‘ad_pdf0.pdf’)”>文件2</a></span><span><a href=”#” onclick=”downloadFile(‘ad_pdf0.pdf’,2);”>下载</a></span><span><a href=”#” onClick=”openpdf(‘ad_pdf0.pdf’)”>打开</a></span><span><a href=”#” onClick=”removefile(‘ad_pdf0.pdf’,2)”>删除</a></span></li>
<li><span ><a href=”#” onClick=”openpdf(‘purchase.pdf’)”>文件3</a></span><span><a href=”#” onclick=”downloadFile(‘purchase.pdf’,3);”>下载</a></span><span><a href=”#” onClick=”openpdf(‘purchase.pdf’)”>打开</a></span><span><a href=”#” onClick=”removefile(‘purchase.pdf’,3)”>删除</a></span></li>
</ul>
添加js方法:
1.初始化文件请求:
window.appRootDirName = “download_pdf”; /定义文件下载后的存放目录
document.addEventListener(“deviceready”, onDeviceReady, false);
function onDeviceReady() {
console.log(“device is ready”);
var gotFS =    function(fileSystem) {
window.fileSystem = fileSystem; // 将filesystem 定义为全局变量
fileSystem.root.getDirectory(window.appRootDirName, {//创建一个目录
create : true,
exclusive : false
}, dirReady, fail);
console.log(“application dir is ready”);
}
window.requestFileSystem(LocalFileSystem.PERSISTENT, 20*1024*1024 , gotFS, fail); //请求一个文件系统
//return root;
}
function fail(error) {
console.log(“failed to get filesystem:”+error);
}
function dirReady(entry) {
window.appRootDir = entry;  //将appRootDir 定义为全局变量
}
2.定义下载方法
 
  function downloadFile(filen,id){
var str = localStorage.getItem(“pdffile”);//这里是判断是否已经下载,用来更新文档下载状态
if(str != null){
if(str.indexOf(filen)+1){
alert(“文件已存在无需再下载!”);
return;
}
}
var fileTransfer = new FileTransfer();
var uri = encodeURI(“http://dev.*****.com.cn/appDownload/”+filen+”");//定义下载的路径
var filePath = window.appRootDir.fullPath+”/”+filen;
navigator.notification.activityStart(“提示”, “数据正在下载中……”); //定义一个下载过度效果
fileTransfer.download(
uri,
filePath,
function(fileEntry) {
navigator.notification.activityStop();
navigator.notification.alert(“下载成功”);
//alert(fileEntry.fullPath);
console.log(“download complete: ” + fileEntry.fullPath);
console.log(“download name: ” + fileEntry.name);
var b = localStorage.getItem(“pdffile”);//获取b的值
console.log(“b:”+b);
if(b){
var a = b+”,”+fileEntry.name;
localStorage.setItem(“pdffile”,a);
}else{
localStorage.setItem(“pdffile”,fileEntry.name);
}
$(“#pdf li:eq(“+id+”) a:eq(1)”).text(“已下载”);         //更改下载状态
},
function(error) {
navigator.notification.activityStop();
alert(“下载失败”);
alert(“error”);
alert(JSON.stringify(error));
console.log(“download error source ” + error.source);
console.log(“download error target ” + error.target);
console.log(“upload error code” + error.code);
}
);
}
3.定义打开文档方法
 
function openpdf(ad){
var str = localStorage.getItem(“pdffile”);//判断是否已经下载,如果下载就打开该文档
if(str != null){
if(str.indexOf(ad)+1){
window.plugins.fileOpener.open(“file:///mnt/sdcard/download_pdf/”+ad);
}else{
alert(“文件未下载!”);
}
}else{
alert(“文件未下载!”);
}
}
4.删除已下载文档
     function removefile(filen,id) {
var str = localStorage.getItem(“pdffile”);//判断文档是否存在 如果存在就删除。
if(str==null){navigator.notification.alert(filen+’不存在!’);return;}
var newstr=str.replace(filen,”");
localStorage.setItem(“pdffile”,newstr);
console.log(“newstr:”+newstr);
window.appRootDir.getFile(filen, {create: false,exclusive: false},
function(fileEntry){
console.log(“name:”+fileEntry.name);
fileEntry.remove(
function() {
navigator.notification.alert(fileEntry.name+’已删除!’);
$(“#pdf li:eq(“+id+”) a:eq(1)”).text(“下载”);
},
fail);
},
function(error){
navigator.notification.alert(filen+’不存在!’);
console.log(“Error removing file: ” + error.code);
}
);
}
这样几个方法就可以很好实现文档下载,打开阅读,状态更改,删除文件等功能。
posted @ 2014-03-20 11:49  huidaoli  阅读(263)  评论(0编辑  收藏  举报