Android - 是否可以将phonegap应用程序与非phonegap应用程序集成

时间:2014-12-05 12:03:06

标签: android cordova documentviewer

我尝试了什么:

我正在开发一个Android应用程序。在我的应用程序中,我必须打开 - >向用户显示microsoft office文档(doc,docx,xl​​s,xlsx,ppt,pptx)内容。为此我尝试了多种方式(apachi-poi,docx4j)。但我无法完成它。

Android - convert doc, docx pages and xls, xlsx sheets to html using apache POI

Android - docx4j build issue

所以我决定在我的应用程序中使用第三方文档SDK显示文档。

Android - microsoft office viewer in my app

但这对我没有帮助。同时我得到了一些建议。通过使用phonegap,我们可以打开Fileopener插件 - >向用户显示文档。

我需要什么:

我已经开发了一个非phonegap应用程序。如果我使用phonegap进行文档查看器,是否可以将phonegap应用程序集成到我的非phonegap应用程序中?

我是手机新手。如果可能的话,请提供一些想法(或)步骤来做到这一点。

2 个答案:

答案 0 :(得分:1)

在您的非phoneGap应用程序中,当用户想要打开文档时(如果您坚持使用phoneGap),只需打开webView,然后打开您的phoneGap应用程序(网页)。

答案 1 :(得分:1)

文件开启器插件只是启动一个意图,其他应用程序打开文件,而不是你的应用程序,所以你不需要phonegap,只需查看插件代码并在你的android项目中做同样的事情。

有一些插件。 https://github.com/markeeftb/FileOpener

private void openFile(String url) throws IOException {
    // Create URI
    Uri uri = Uri.parse(url);
    Intent intent = null;
    // Check what kind of file you are trying to open, by comparing the url with extensions.
    // When the if condition is matched, plugin sets the correct intent (mime) type,
    // so Android knew what application to use to open the file
    if (url.contains(".doc") || url.contains(".docx")) {
        // Word document
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/msword");
    } else if(url.contains(".pdf")) {
        // PDF file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/pdf");
    } else if(url.contains(".ppt") || url.contains(".pptx")) {
        // Powerpoint file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
    } else if(url.contains(".xls") || url.contains(".xlsx")) {
        // Excel file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/vnd.ms-excel");
    } else if(url.contains(".rtf")) {
        // RTF file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/rtf");
    } else if(url.contains(".wav")) {
        // WAV audio file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "audio/x-wav");
    } else if(url.contains(".gif")) {
        // GIF file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "image/gif");
    } else if(url.contains(".jpg") || url.contains(".jpeg")) {
        // JPG file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "image/jpeg");
    } else if(url.contains(".png")) {
        // PNG file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "image/png");
    } else if(url.contains(".txt")) {
        // Text file
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "text/plain");
    } else if(url.contains(".mpg") || url.contains(".mpeg") || url.contains(".mpe") || url.contains(".mp4") || url.contains(".avi")) {
        // Video files
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "video/*");
    }
    //if you want you can also define the intent type for any other file
    //additionally use else clause below, to manage other unknown extensions
    //in this case, Android will show all applications installed on the device
    //so you can choose which application to use
    else { intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "*/*");
    }
    this.cordova.getActivity().startActivity(intent);
}

只需更改this.cordova.getActivity()即可获得您调用代码的类上的活动。