PhoneGap在本机应用程序中打开文件。通过build.phonegap.com构建

时间:2013-10-18 12:18:21

标签: android pdf cordova smartgwt phonegap-build

起初:

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

  1. 我在SmartGWT.mobile中建立了应用程序
  2. 我将配置文件和所有需要的文件附加到此版本以准备PhoneGap
  3. 应用程序是通过build.phonegap.com网站构建的。
  4. 在Android 4.1.1
  5. 上完美运行

    我想:

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

      var fileTransfer = new FileTransfer();
      fileTransfer.download(.....
      
    2. 在原生应用中打开PDF(例如Adobe Reader),无论哪个安装在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) 甚至是firefox开放PDF的HTML5插件

    3. 所有变体都带有“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 Class,因此无法正常工作

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

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

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

      我只是希望我的应用程序下载并显示(在本机应用程序中)用户的PDF。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

window.plugins.fileOpener.open( path );

答案 1 :(得分:-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);
    }
 );
}