首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cordova.plugins.diagnostic中使用Meteor不工作

在cordova.plugins.diagnostic中使用Meteor不工作
EN

Stack Overflow用户
提问于 2018-08-31 08:54:24
回答 2查看 395关注 0票数 1

我使用METEOR@1.4.2.3与以下插件:

代码语言:javascript
复制
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级别26 (从API级别22到26)实现新的正确结构,但它不起作用。

代码语言:javascript
复制
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
  ]);

}

我总是收到这个错误,应用程序被冻结了:

I 20180831-10:52:52.483(2)?08-31 10:52:44.612 29275 29275 i铬:INFO:控制台(5283)“未定义的TypeError:无法读取属性‘照相机’,来源:http://localhost:12136/app/app.js?hash=4b27536f027d34508de1ae9fccb904c97e426df1 (5283)

EN

回答 2

Stack Overflow用户

发布于 2018-08-31 20:11:28

欢迎来到堆栈溢出。

这样的错误消息

无法读取未定义的属性“照相机”

用于告诉您查看代码中存在.CAMERA的位置,这是以下行:

cordova.plugins.diagnostic.permission.CAMERA,

这意味着没有定义cordova.plugins.diagnostic.permission。这意味着定义了cordova.plugins.diagnostic,因此您需要检查该插件的文档。

这将告诉您在哪里查找,下一条建议是编写防御性代码,以考虑到意外情况。就像这样:

代码语言:javascript
复制
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") 
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-06 09:50:00

我解决了问题。

我在添加插件

代码语言:javascript
复制
cordova:cordova-plugin-android-permissions  1.0.0

为了这个项目。

修改后的函数OnDeviceReady:

代码语言:javascript
复制
 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一起使用以请求权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52111863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档