ionic cordova相册插件和监听Android返回键

ionic混合开发调用Android系统相册,官方的cordova-image-picker插件在直接用的时候会在Android6.0以上的版本由于没有获得相应的存储权限而闪退。

  • 解决方法一:

    • 在原有的cordova插件上面改动,添加了动态授权,我放在了github 用法和原来的相同。

        function getImgPicker() {
          var options = {
            maximumImagesCount: 1,
            width: 800,
            height: 800,
            quality: 80,
            title:'',
            message:'',
            outputType:1
          };
          window.imagePicker.getPictures(function (results) {
            vm.userInfo.Url = results[0];
            console.log(vm.userInfo.Url);
            vm.upload(vm.userInfo.Url);
          }, function (err) {
            publicMethod.showLoadingNoBackdrop('调取相册失败');
            console.log(angular.toJson(error, true));
          }, options);
        }
      
  • 解决方法二:

    • 添加一个新的插件,专门获取所需的权限cordova-plugin-android-permissions,下面是用法。

        var permissions = cordova.plugins.permissions;
        permissions.hasPermission(permissions.CAMERA, checkPermissionCallback, null);
         
        function checkPermissionCallback(status) {
          if(!status.hasPermission) {
            var errorCallback = function() {
              console.warn('Camera permission is not turned on');
            }
            permissions.requestPermission(
              permissions.CAMERA,
              function(status) {
                if(!status.hasPermission) errorCallback();
              },
              errorCallback);
          }
        }
      

ionic 监听Android的返回键和双击退出程序(直接上代码)

$ionicPlatform.registerBackButtonAction(function (e) {
  e.preventDefault();
  //判断处于哪个页面时双击退出
  if ($location.path() == '/tab/home' || $location.path() == '/tab/activity' ||
    $location.path() == '/tab/person' || $location.path() == '/tab/share' || $location.path() == '/tab/study') {
    if ($rootScope.backButtonPressedOnceToExit) {
      ionic.Platform.exitApp();
    } else {
      $rootScope.backButtonPressedOnceToExit = true;
      $cordovaToast.show("再按一次退出系统", "short", "bottom");
      $timeout(function () {
        $rootScope.backButtonPressedOnceToExit = false;
      }, 2000);
    }
  } else if ($location.path() == '/blueprint-list' || $location.path() == '/megagame-list') {
    $state.go('tab.activity');   //此处判断当前所处的View,并返回到tab页
  } else if ($ionicHistory.backView()) {
    $ionicHistory.goBack();
  } else {
    if ($rootScope.backButtonPressedOnceToExit) {
      ionic.Platform.exitApp();
    } else {
      $rootScope.backButtonPressedOnceToExit = true;
      $cordovaToast.show("再按一次退出系统", "short", "bottom");
      $timeout(function () {
        $rootScope.backButtonPressedOnceToExit = false;
      }, 2000);
    }
  }
  return false;
}, 101);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面(2017-11-03):现在在做Python研发,cordova早已忘却,尤其是技术细节,大家问我我也不...
    DoraLvor阅读 19,908评论 8 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,962评论 19 139
  • cordova plugin add cordova-plugin-devicecordova plugin ad...
    XLsn0w阅读 1,607评论 1 3
  • ionic是一个运行在webview上的应用,但是很多功能js搞不定,免不了本地代码的支持。ionic在nativ...
    李泽1988阅读 3,055评论 0 3
  • 1、什么是NPM? NPM(node package manager),通常称为node包管理器,主要功能就是管理...
    皆为序幕__so阅读 8,924评论 0 2