【问题标题】:Reading ionic www/config.xml file from device从设备读取 ionic www/config.xml 文件
【发布时间】:2015-04-18 15:49:43
【问题描述】:

我无法从 Android 设备读取 www/config.xml 文件。我尝试了两种不同的方法。首先,我尝试使用另一个线程中推荐的 $http 服务。当这不起作用时,我尝试使用 Cordova 文件插件。我这样做的原因是尝试从应用程序中的 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) Cordova 文件插件

   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

【问题讨论】:

  • 你试过url = 'config.xml'
  • 是的,那是我的第一次尝试。它没有用。
  • 接下来我会检查文件是否实际存在于构建中。获取您的 APK/IPA 文件并将扩展名更改为 .zip,然后浏览内容以查看是否 ionic 在构建项目时正在删除该文件。

标签: cordova ionic-framework cordova-plugins ionic


【解决方案1】:

查看文件夹platforms/android,您可以看到文件'android_asset/www/config.xml' 不存在。 您可以尝试读取文件'/res/xml/config.xml',或者您可以尝试不同的方法,例如创建Cordova Hook。

Cordova 挂钩:

Cordova Hooks 表示可以通过以下方式添加的特殊脚本 应用程序和插件开发人员甚至是您自己的构建系统 自定义cordova命令。

您可以基于相同的钩子调整replace text hook from this article 或这个build number hook。

更新

要仅获取应用的版本号,您可以使用此插件:

Cordova AppVersion 插件

Cordova 插件返回当前应用的版本号

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

Is available also with ngCordova

【讨论】:

    【解决方案2】:

    ngCordova 在使用 ionic 时有一组很棒的插件。 要获取应用版本,请使用此版本: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;
    });
    

    【讨论】:

    • 非常好。请问您的$ionicPlatform.ready 回调在哪里?这是您添加的内容还是 Ionic 应用程序中已经存在的内容?
    • 这是一个离子服务:link,更详细一点:link。我向它传递了一个回调函数来启动我的应用程序初始化。
    猜你喜欢
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多