diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2016-09-08 16:52:32 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2016-09-08 16:52:32 -0400 |
| commit | 8545d9ea546b9459245e3aaa83b12bc09e30b408 (patch) | |
| tree | 2ddc48b0cfb64748bac5e199e77750b02a76ca65 /www/js | |
| parent | d093aa7ff439c56a309e1778ecb66b7b13480c73 (diff) | |
#322 - go through run time permission flow for Android
Former-commit-id: 029648949ceacb1ef96b073b9d1c5d5857fb0bc5
Diffstat (limited to 'www/js')
| -rw-r--r-- | www/js/EventModalCtrl.js | 37 | ||||
| -rw-r--r-- | www/js/MonitorModalCtrl.js | 36 |
2 files changed, 68 insertions, 5 deletions
diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js index 247b486c..8a2c3c4c 100644 --- a/www/js/EventModalCtrl.js +++ b/www/js/EventModalCtrl.js @@ -406,7 +406,40 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro // Saves a snapshot of the monitor image to phone storage //----------------------------------------------------------------------- - $scope.saveEventImageToPhone = function (onlyAlarms) { + + $scope.saveEventImageToPhoneWithPerms = function (onlyAlarms) + { + + if ($rootScope.platformOS != 'android') + { + processSaveEventImageToPhone(onlyAlarms); + } + + // if we are on android do the 6.x+ hasPermissions flow + NVRDataModel.debug("EventModalCtrl: Permission checking for write"); + var permissions = cordova.plugins.permissions; + permissions.hasPermission(permissions.WRITE_EXTERNAL_STORAGE, checkPermissionCallback, null); + + function checkPermissionCallback(status) { + if (!status.hasPermission) + { + SaveError("No permission to write to external storage"); + } + permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, succ,err); + } + + function succ(s) + { + processSaveEventImageToPhone(onlyAlarms); + } + function err(e) + { + SaveError ("Error in requestPermission"); + } + }; + + + function processSaveEventImageToPhone (onlyAlarms) { if ($scope.loginData.useNphZmsForEvents) { NVRDataModel.log("Use ZMS stream to save to phone"); @@ -418,7 +451,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro } - }; + } function saveEventImageToPhoneZms(onlyAlarms) { // The strategy here is to build the array now so we can grab frames diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js index e7e22e86..84553d6e 100644 --- a/www/js/MonitorModalCtrl.js +++ b/www/js/MonitorModalCtrl.js @@ -648,7 +648,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ noBackdrop: true, duration: 2000 }); - NVRDataModel.log("Error saving image: " + e.message); + NVRDataModel.log("Error saving image: " + e); //console.log("***ERROR"); } @@ -761,7 +761,37 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ // Saves a snapshot of the monitor image to phone storage //----------------------------------------------------------------------- - $scope.saveImageToPhone = function (mid) { + $scope.saveImageToPhoneWithPerms = function (mid) + { + if ($rootScope.platformOS != 'android') + { + saveImageToPhone(mid); + } + + + NVRDataModel.debug("ModalCtrl: Permission checking for write"); + var permissions = cordova.plugins.permissions; + permissions.hasPermission(permissions.WRITE_EXTERNAL_STORAGE, checkPermissionCallback, null); + + function checkPermissionCallback(status) { + if (!status.hasPermission) + { + SaveError("No permission to write to external storage"); + } + permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, succ,err); + } + + function succ(s) + { + saveImageToPhone(mid); + } + function err(e) + { + SaveError ("Error in requestPermission"); + } + }; + + function saveImageToPhone(mid) { $ionicLoading.show({ template: $translate.instant('kSavingSnapshot') + '...', noBackdrop: true, @@ -820,7 +850,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ SaveError(e.message); } - }; + } |
