2015-02-17 66 views
6

我无法从Android设备读取www/config.xml文件。我尝试了两种不同的方法。首先,我尝试使用另一个线程推荐的$ http服务。当没有工作时,我尝试使用Cordova文件插件。我这样做的原因是尝试从应用程序中的www/config.xml文件中获取版本号。下面是两种方法:从设备读取离子www/config.xml文件

1)$ http.get()

url = 'file:///android_asset/www/config.xml' 
$http.get(url) 
    .then ((data) -> 
     versionNumber = data.data.match(/<widget\s.*?\sversion=['"]([^'"]+)['"]/) 
     verNum = versionNumber[1] 
    ), (err) -> 
    # {"data": null, "status": 0, .....} 
     alert JSON.stringify err 

2)科尔多瓦文件插件

if ionic.Platform.isAndroid() 
    path = 'file:///android_asset/www/' 
    file = 'config.xml' 
    $cordovaFile.readAsText(path, file) 
     .then ((data) -> 
     alert JSON.stringify data 
     return 
    ), (error) -> 
     # I alert { code: 5 } which is an ENCODING_ERR 
     alert JSON.stringify error 
+1

你试过'URL =“config.xml'' – 2015-02-17 20:36:12

+0

是的,这是我的第一次尝试。它不起作用。 – eNddy 2015-02-17 20:51:45

+0

接下来,我将检查该文件是否存在于构建中。取出你的APK/IPA文件,将扩展名改为'.zip',然后浏览内容,看看离子是否在构建项目时删除该文件。 – 2015-02-17 21:19:28

回答

2

看看文件夹平台/ Android和你可以看到,文件'android_asset/www/config.xml'不存在。 您可以尝试阅读文件'/res/xml/config.xml',或者您可以尝试其他方法,例如创建Cordova Hook

科尔多瓦钩

科尔多瓦鱼钩表示其可以通过 应用程序和插件的开发者,甚至通过自己的编译系统被添加到 定制科尔多瓦命令特殊脚本。

你可以基于相同的钩适应replace text hook from this article或本build number hook

UPDATE

若要仅获取您的应用程序的版本号,你可以使用这个插件:

科尔多瓦AppVersion插件

科尔多瓦插件返回的版本号目前的应用程序

https://github.com/whiteoctober/cordova-plugin-app-version

Is available also with ngCordova

1

ngCordova与离子工作时,有一个伟大的插件集。 为了获取应用程序的版本使用这一个:http://ngcordova.com/docs/plugins/appVersion/

我想在我的启动画面显示的版本号,所以我用他们的榜样,并添加一个事件:

$ionicPlatform.ready回调:

$cordovaAppVersion.getVersionNumber().then(function (version) { 
    $rootScope.$broadcast("appVersionResolved", { version: appVersion }); 
} 

在闪屏控制器:

$rootScope.$on("appVersionResolved", function(event, args) { 
    $scope.appVersion = args.version; 
}); 
+0

非常好。我可以问你有哪些'$ ionicPlatform.ready'回调?这是你添加的东西,还是预先存在于Ionic应用程序中? – isherwood 2015-09-24 13:47:16

+1

这是一个离子服务:[链接](http://ionicframework.com/docs/api/service/$ionicPlatform/), 和一点更详细:[链接](http://ionicframework.com/docs/ API /效用/ ionic.Platform /)。 我传递了一个回调函数,开始我的应用程序初始化。 – 2015-09-24 16:30:10