2

首先:

是的,StackOverflow 中有很多解决方案,但在我的情况下它们都不起作用。

  1. 我在 SmartGWT.mobile 中构建了应用程序
  2. 我将配置文件和所有需要的文件附加到这个构建中,以便为 PhoneGap 做准备
  3. 应用程序是通过 build.phonegap.com 站点构建的。
  4. 它在 Android 4.1.1 上运行良好

我想要:

  1. 将文件下载到本地文件系统,它是一个 PDF 文件 -使用以下方法可以正常工作

    var fileTransfer = new FileTransfer();
    fileTransfer.download(.....
    
  2. 在本机应用程序(例如 Adob​​e Reader)中打开 PDF,无论是安装在 android 上的 PDF -它不工作

    我试过了:

    (1)

    cordova.exec("ChildBrowserCommand.showWebPage", encodeURI(theFile.toURL()) );
    

    (2)

    window.plugins.childBrowser.showWebPage(encodeURI(theFile.toURL()));
    

    (3)

    window.open(encodeURI(theFile.toURL()), '_blank', 'location=yes');
    

    (4) 甚至 HTML5 插件,用于通过 firefox 打开 PDF

所有带有“file://”的变体,前面没有“./”,依此类推。

childBrowser 只显示白屏,每次在前面添加“http://”,window.open - 相同。

我终于找到了一些有趣的东西,比如 WebIntent,所以我做到了:

    window.plugins.webintent.startActivity({
          action: window.plugins.webintent.ACTION_VIEW,
          type: "application/pdf",
          url: encodeURI(theFile.toURL().substring(7))},
          function() {},
          function() {alert('Failed to open URL via Android Intent')}
    );

但它不起作用,因为 phonegap-build 没有附加类文件并且它找不到 WebIntent 类

我在 config.xml 中声明了这个插件:

    <gap:plugin name="com.borismus.webintent.WebIntent" />

你知道为什么它不工作,或者我在做什么?也许你知道其他打开文件的方法,就像在本机应用程序中一样,它应该很简单

我只想让我的应用程序下载并(在本机应用程序中)为用户显示 PDF。

4

2 回答 2

1

唐的 FileOpener 版本已在我的应用程序 cordova 3.0 上运行

phonegap local plugin add https://github.com/don/FileOpener

然后自动添加所有 xmls、插件等。

在 index.html 上添加fileopener.js然后

window.plugins.fileOpener.open( path );
于 2013-12-30T06:19:58.170 回答
-1
$("#page").on('pageshow', function(event, ui) {
 if(event.handled !== true)
    {
    window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    event.handled = true;
    }
  return false;
});

function fail() {
    console.log("failed to get filesystem");
}

function gotFS(fileSystem) {
   console.log("got filesystem");

   // save the file system for later access
   console.log(fileSystem.root.fullPath);
   window.rootFS = fileSystem.root;
    downloadImage(url, fileName);
}

function downloadImage(url, fileName){
   var ft = new FileTransfer();
   ft.download(
    url,
    window.rootFS.fullPath + "/" + fileName,
    function(entry) {
        console.log("download complete: " + entry.fullPath);           
    },
    function(error) {
            console.log("download error" + error.code);
    }
 );
}
于 2013-10-18T12:53:35.803 回答