如何在Titanium Appcelerator中使用OpenURL打开本地pdf文件?

时间:2014-01-31 10:12:41

标签: titanium appcelerator appcelerator-mobile

在Titanium Appcelerator中,我尝试使用OpenURL()方法从本地目录打开PDF文件。它运作不正常。我在Android设备上试过。

我的代码;

var myURL = "file:///storage/emulated/0/Android/data/com.test.testapp/cache/_tmp/sample.pdf";
Ti.Platform.openURL(myURL);

2 个答案:

答案 0 :(得分:3)

尝试这样的事情:

try {
 var f = Ti.Filesystem.getFile('your.pdf');
 Ti.Android.currentActivity.startActivity(Ti.Android.createIntent({
    action: Ti.Android.ACTION_VIEW,
    type: 'application/pdf',
    data: f.getNativePath()
 }));
}
catch (err) {
    var alertDialog = Titanium.UI.createAlertDialog({
      title: 'No PDF Viewer',
      message: 'We tried to open a PDF but failed. Do you want to search the marketplace for a PDF viewer?',
      buttonNames: ['Yes','No'],
      cancel: 1
   });
   alertDialog.show();
   alertDialog.addEventListener('click', function(evt) {
     if (evt.index == 0) {
        Ti.Platform.openURL('http://search?q=pdf');
     }
   });
}

答案 1 :(得分:0)

要以原生方式打开远程PDF,您必须下载它。这是一个解决方案,为用户提供预览或下载PDF的选项。

var url = "http://www.polyu.edu.hk/iaee/files/pdf-sample.pdf";
var opts = {
    cancel: 2,
    options: ['Preview', 'Download', 'Cancel'],
    selectedIndex: 2,
    destructive: 0,
    title: 'Open PDF'
};
var dialog = Ti.UI.createOptionDialog(opts);
dialog.addEventListener('click', function(e) {
    if (e.index == 0) {
        url = "https://docs.google.com/viewer?embedded=true&url=" + url;
        var win = Ti.UI.createWindow();
        var webView = Ti.UI.createWebView({url:url});
        win.add(webView);
        win.open();
    } else if (e.index == 1) {
        var filepath = url.split('/').pop();
        var httpClient = Titanium.Network.createHTTPClient({
            onload: function() {
                var file = Titanium.Filesystem.getFile(Titanium.Filesystem.tempDirectory, filepath);
                file.write(this.responseData);
                try {
                    Ti.Android.currentActivity.startActivity(Ti.Android.createIntent({
                        action: Ti.Android.ACTION_VIEW,
                        type: 'application/pdf',
                        data: file.getNativePath()
                    }));
                } catch (e) {
                    alert('No PDF reader found.');
                }
            }
        });
        httpClient.open('GET', url);
        httpClient.send();
    }
});
dialog.show();