2015-02-17 18 views
6

Tôi gặp sự cố khi đọc tệp www/config.xml từ thiết bị Android. Tôi đã thử hai cách tiếp cận khác nhau. Trước tiên, tôi đã thử sử dụng dịch vụ $ http được đề xuất trong một chuỗi khác để thực hiện. Khi điều đó không hoạt động, tôi đã cố gắng sử dụng plugin tệp Cordova. Lý do tôi làm điều này là cố gắng lấy số phiên bản từ tệp www/config.xml trong ứng dụng. Dưới đây là hai cách tiếp cận:Đọc tệp ionic www/config.xml từ thiết bị

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 file plugin

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

bạn đã thử 'url = 'config.xml'' –

+0

có đó là của tôi lần đầu tiên. Nó không hoạt động. – eNddy

+0

Tiếp theo, tôi sẽ kiểm tra xem tệp có tồn tại thực tế trong bản dựng hay không. Lấy tệp APK/IPA của bạn và thay đổi phần mở rộng thành '.zip' và sau đó duyệt qua các nội dung để xem liệu có lẽ ionic đang xóa tệp đó khi xây dựng dự án hay không. –

Trả lời

2

Hãy xem để các nền tảng thư mục/android và bạn có thể thấy rằng tệp 'android_asset/www/config.xml' không tồn tại. Bạn có thể thử đọc tập tin '/res/xml/config.xml' hoặc bạn có thể thử một cách tiếp cận khác ví dụ như tạo một Cordova Hook.

Cordova Móc:

Cordova Hooks đại diện cho các kịch bản đặc biệt mà có thể được bổ sung bởi ứng dụng và cắm các nhà phát triển hoặc thậm chí bằng cách xây dựng hệ thống của riêng bạn để lệnh tùy chỉnh cordova.

Bạn có thể điều chỉnh replace text hook from this article hoặc build number hook này dựa trên cùng một móc.

CẬP NHẬT

Để có được chỉ số phiên bản của ứng dụng của bạn, bạn có thể sử dụng plugin này:

Cordova AppVersion Plugin

Cordova plugin để trả lại số phiên bản của ứng dụng hiện tại

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

Is available also with ngCordova

1

ngCordova có một bộ lớn các plugin khi làm việc với ion. Để có được phiên bản ứng dụng sử dụng này một: http://ngcordova.com/docs/plugins/appVersion/

tôi muốn hiển thị số phiên bản trong màn hình của tôi, vì vậy tôi sử dụng ví dụ của họ và thêm một sự kiện:

Bên $ionicPlatform.ready callback:

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

Trong bộ điều khiển màn hình splash:

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

Rất đẹp. Tôi có thể hỏi nơi bạn có cuộc gọi lại '$ ionicPlatform.ready' của mình không? Đó có phải là thứ bạn đã thêm vào hoặc có sẵn trong ứng dụng Ionic không? – isherwood

+1

Đây là dịch vụ ion: [link] (http://ionicframework.com/docs/api/service/$ionicPlatform/), và chi tiết hơn một chút: [link] (http://ionicframework.com/docs/ api/utility/ionic.Platform /). Tôi chuyển cho nó chức năng gọi lại khởi động khởi tạo ứng dụng của tôi. –

Các vấn đề liên quan