diff options
| -rw-r--r-- | package.json | 3 | ||||
| -rw-r--r-- | plugins/fetch.json | 8 | ||||
| -rw-r--r-- | www/js/EventModalCtrl.js | 37 | ||||
| -rw-r--r-- | www/js/MonitorModalCtrl.js | 36 | ||||
| -rw-r--r-- | www/templates/events-modal.html | 4 | ||||
| -rw-r--r-- | www/templates/monitors-modal.html | 2 |
6 files changed, 81 insertions, 9 deletions
diff --git a/package.json b/package.json index d05129e4..acb0583a 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,8 @@ { "locator": "https://github.com/hypery2k/cordova-certificate-plugin", "id": "cordova-plugin-certificates" - } + }, + "cordova-plugin-android-permissions" ], "cordovaPlatforms": [ {}, diff --git a/plugins/fetch.json b/plugins/fetch.json index adfb9ae0..44bf03fa 100644 --- a/plugins/fetch.json +++ b/plugins/fetch.json @@ -194,5 +194,13 @@ }, "is_top_level": true, "variables": {} + }, + "cordova-plugin-android-permissions": { + "source": { + "type": "registry", + "id": "cordova-plugin-android-permissions" + }, + "is_top_level": true, + "variables": {} } }
\ No newline at end of file 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); } - }; + } diff --git a/www/templates/events-modal.html b/www/templates/events-modal.html index 41f7d0eb..355ff4f2 100644 --- a/www/templates/events-modal.html +++ b/www/templates/events-modal.html @@ -129,11 +129,11 @@ </li> <li ng-if="defaultVideo==''"> - <a href="" ng-click="saveEventImageToPhone(false)"> <i class="ion-ios-camera"></i></a> + <a href="" ng-click="saveEventImageToPhoneWithPerms(false)"> <i class="ion-ios-camera"></i></a> </li> <li ng-if="defaultVideo==''"> - <a href="" ng-click="saveEventImageToPhone(true)"> <i class="ion-android-notifications"></i></a> + <a href="" ng-click="saveEventImageToPhoneWithPerms(true)"> <i class="ion-android-notifications"></i></a> </li> <li ng-if="$root.isAlarm"> diff --git a/www/templates/monitors-modal.html b/www/templates/monitors-modal.html index 8833a47c..33ddc865 100644 --- a/www/templates/monitors-modal.html +++ b/www/templates/monitors-modal.html @@ -100,7 +100,7 @@ <ul> <li> - <a href="" ng-click="saveImageToPhone(monitorId)"> <i class="icon ion-ios-camera"></i></a> + <a href="" ng-click="saveImageToPhoneWithPerms(monitorId)"> <i class="icon ion-ios-camera"></i></a> </li> <li ng-if="$root.platformOS == 'desktop'"> |
