我正在将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。代码已相应更新。