2015-02-17 2 views
6

У меня возникли проблемы с чтением файла www/config.xml с устройства Android. Я попробовал два разных подхода. Во-первых, я попытался использовать службу $ http, рекомендованную в другом потоке. Когда это не сработало, я попытался использовать плагин для файла Cordova. Причина, по которой я делаю это, - попытаться получить номер версии из файла www/config.xml в приложении. Ниже приведены оба подхода:Чтение файла ionic 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'' –

+0

Да, это был мой Первая попытка. Это не работает. – eNddy

+0

Далее я проверил бы, действительно ли файл существует в сборке. Возьмите файл APK/IPA и измените расширение на '.zip', а затем просмотрите содержимое, чтобы узнать, может ли ионный удалять этот файл при создании проекта. –

ответ

2

Посмотрите на папку платформ/Android, и вы можете видеть, что файл 'android_asset/www/config.xml' не существует. Вы можете попробовать прочитать файл '/res/xml/config.xml' или попробовать другой подход, например, создать Cordova Hook.

Кордова Крючки:

Кордова Крючки представляют собой специальные скрипты, которые могут быть добавлены приложений и разработчиков плагинов или даже вашей собственной системы сборки для команд подгоняет Cordova.

Вы можете адаптировать 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

+1

Это ионная услуга: [link] (http://ionicframework.com/docs/api/service/$ionicPlatform/), и немного более подробно: [link] (http://ionicframework.com/docs/ API/утилиты/ionic.Platform /). Я передаю ему функцию обратного вызова, которая запускает мою инициализацию приложения. –