【问题标题】:Using Meteor with cordova.plugins.diagnostic not Work将 Meteor 与 cordova.plugins.diagnostic 一起使用不起作用
【发布时间】:2018-09-06 17:50:00
【问题描述】:

我正在使用 METEOR@1.4.2.3 和以下插件:

cordova:cordova-plugin-backbutton       0.3.0
cordova:cordova-plugin-camera           2.1.1
cordova:cordova-plugin-device           1.1.4
cordova:cordova-plugin-sim              1.3.2
cordova:cordova.plugins.diagnostic      2.3.16
cordova:phonegap-plugin-barcodescanner  3.0.0

我尝试为 Android API Level 26(从 API Level 22 到 26)实现新的正确结构,但它不起作用。

代码

function onDeviceReady() {
console.log(device.cordova);

  cordova.plugins.diagnostic.requestRuntimePermissions(function(statuses) {
    for (var permission in statuses) {
        switch (statuses[permission]) {
            case cordova.plugins.diagnostic.permissionStatus.GRANTED:
                console.log("Permission granted to use " + permission);
                break;
            case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED:
                console.log("Permission to use " + permission + " has not been requested yet");
                break;
            case cordova.plugins.diagnostic.permissionStatus.DENIED:
                console.log("Permission denied to use " + permission + " - ask again?");
                break;
            case cordova.plugins.diagnostic.permissionStatus.DENIED_ALWAYS:
                console.log("Permission permanently denied to use " + permission + " - guess we won't be using it then!");
                break;
        }
    }
}, function(error) {
    console.error("The following error occurred: " + error);
}, [
    cordova.plugins.diagnostic.permission.CAMERA,
    cordova.plugins.diagnostic.permission.WRITE_EXTERNAL_STORAGE,
    cordova.plugins.diagnostic.permission.READ_EXTERNAL_STORAGE,
    cordova.plugins.diagnostic.permission.READ_PHONE_STATE
  ]);

}

我总是收到这个错误并且APP被冻结:

I20180831-10:52:52.483(2)? 08-31 10:52:44.612 29275 29275 I chromium: [INFO:CONSOLE(5283)]“未捕获的类型错误:无法读取未定义的属性 'CAMERA'”,来源:http://localhost:12136/app/app.js?hash=4b27536f027d34508de1ae9fccb904c97e426df1 (5283)

【问题讨论】:

    标签: meteor cordova-plugins diagnostics


    【解决方案1】:

    欢迎来到 Stack Overflow。

    这样的错误信息

    无法读取未定义的属性“CAMERA”

    用于告诉您在代码中查找.CAMERA 的位置,即这一行:

    cordova.plugins.diagnostic.permission.CAMERA,

    这意味着cordova.plugins.diagnostic.permission 未定义。这意味着cordova.plugins.diagnostic 已定义,因此您需要查看该插件的文档。

    这将告诉您在哪里查看,下一条建议是编写防御性代码以应对意外情况。像这样的:

    if (cordova && cordova.plugins && cordova.plugins.diagnostic && cordova.plugins.diagnostic.permission) {
      // Everything is defined, expect cordova.plugins.diagnostic.permission.CAMERA to be valid
    } else {
      console.error("Something undefined in cordova.plugins.diagnostic.permission") 
    }
    

    【讨论】:

      【解决方案2】:

      我解决了这个问题。

      我正在添加插件

      cordova:cordova-plugin-android-permissions  1.0.0
      

      到项目。

      修改后的函数OnDeviceReady:

       function onDeviceReady() {
          console.log(device.cordova);
      
          var permissions = cordova.plugins.permissions;
      
         permissions.checkPermission(permissions.READ_PHONE_STATE, function( status ){
            if ( status.hasPermission ) {
              console.log("Yes (READ_PHONE_STATE) ");
            }
            else {
              console.warn("No (READ_PHONE_STATE) ");
              permissions.requestPermission(permissions.READ_PHONE_STATE, success, error('READ_PHONE_STATE'));
            }
          });
      
          permissions.checkPermission(permissions.CAMERA, function( status ){
            if ( status.hasPermission ) {
              console.log("Yes (CAMERA) ");
            }
            else {
              console.warn("No (CAMERA) ");
              permissions.requestPermission(permissions.CAMERA, success, error("CAMERA"));
            }
          });
      
          permissions.checkPermission(permissions.WRITE_EXTERNAL_STORAGE, function( status ){
            if ( status.hasPermission ) {
              console.log("Yes (WRITE_EXTERNAL_STORAGE) ");
            }
            else {
              console.warn("No (WRITE_EXTERNAL_STORAGE) ");   
              permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, 
              success,error("WRITE_EXTERNAL_STORAGE")
                );
            }
          });
      
          permissions.checkPermission(permissions.READ_EXTERNAL_STORAGE, function( status ){
            if ( status.hasPermission ) {
              console.log("Yes (READ_EXTERNAL_STORAGE) ");
            }
            else {
              console.warn("No (READ_EXTERNAL_STORAGE) ");
              permissions.requestPermission(permissions.READ_EXTERNAL_STORAGE, success, error('READ_EXTERNAL_STORAGE'));
            }
          });
      
          function error(permission4request) {
              console.warn(permission4request + ' permission is not turned on');
              console.log(permission4request + ' permission is not turned on');
          }
           fdsf
      
          function success( status ) {
              if( !status.hasPermission ) error();
          }
      
          loginLogic();
      }
      

      此代码使用 API 级别 26 来请求权限。

      【讨论】:

        猜你喜欢
        • 2012-10-23
        • 2014-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 2015-09-16
        相关资源
        最近更新 更多