如何从Cordova应用程序访问和显示android_asset资源?

时间:2014-01-08 16:43:48

标签: android cordova

我正在将iOS应用程序移植到Android并遇到资源访问问题。

理想情况下,我想在应用程序中打开补充文件(在本例中为PDF,MP4电影等);但是,我发现Android + Cordova不能像iOS + Cordova那样无缝地工作。

知道(并接受)我需要将此类文件传递给辅助应用程序,我遇到了明显的权限问题(即外部资源无法在资源包/ APK中看到)。

我想我可以使用Cordova File插件将资源复制到设备上的用户文件夹,然后使用类似FileOpener插件的东西;但是,File插件可以访问设备文件系统 - 但不能从APK中提取。

我希望Asset2SD插件(https://github.com/gkcgautam/Asset2SD)可以在这里提供帮助,因为它最近已更新到Cordova 3。

是否有更合适/首选的方法来做这种事情?我不得不认为这是一个相对常见的任务,但似乎没有太多关于这个主题(缺少“找到另一种方式......”)。

注意:我已经联系了PhoneGap / Cordova社区(https://groups.google.com/forum/#!topic/phonegap/xh_4UrEl9Gw),但在那里没有取得多大成功。

EDIT-1:此外,APK上的文件大小将超过50 MB上限,需要扩展APK。我已经提到了这个可能会使事情更简单的机会。

EDIT-2:我设法让我的基本APK缩小,并重新分配了一些资源,因此无需扩展APK(OBB)。我还设法利用Asset2SD成功提取资源。我剩下的问题是走路。

代码看起来像......

window.plugins.asset2sd.startActivity(

    {
        asset_file: "www/folder/" + filename,
        destination_file_location: "MyApp/myfolder/",
        destination_file: filename
    },

    // success on saving file
    function(filename) { 
        window.plugins.fileOpener.open("file:///" + filename);
    }, 

    // failure on saving file
    function() { 
        console.log("Could not open file");
    }

);

我知道Asset2SD使用getExternalStorageDirectory()[谷歌似乎主张在他们关于扩展APK的讨论中使用getExternalFilesDir()]。

EDIT-3:从Asset2SD(即文件名+路径)中排序返回值,可将其推送到FileOpener。代码已相应更新。

0 个答案:

没有答案