2016-09-06 13 views
10

Witam Zajmuję się tworzeniem aplikacji hybrydowych za pomocą cordova. Próbuję uzyskać dostęp do ostatniego połączenia, które są pominięte w android telefonu komórkowego przy użyciu CallLog plugin.This co próbowałem,Wtyczka dostępu do CallLog w Cordova nie działa

1.I installed the plugin with this command cordova plugin add https://github.com/dalyc/Cordova-CallLog-Plugin.git. 
2.I am using angularJS.I have this app.js. 

var app=angular.module('lmp', ['ngCordova']); 
    app.controller('lmpctrl',['$scope', 'CallLogService', function($scope, CallLogService){ 
     $scope.data = {}; 
       $scope.callTypeDisplay = function(type) { 
        switch(type) { 
         case 1: 
          return 'Incoming'; 
         case 2: 
          return 'Outgoing'; 
         case 3: 
          return 'Missed'; 
         default: 
          return 'Unknown'; 
        }}; 

       CallLogService.list(1).then(
        function(callLog) { 
         console.log(callLog); 
         $scope.data.lastCall = callLog[0]; 
        }, 
        function(error) { 
         console.error(error); 
        }); 
      }]); 

    app.factory('CallLogService', ['$q', function($q) { 
      return { 
       list : function(days) { 
        var q = $q.defer(); 
        // days is how many days back to go 
        window.plugins.calllog.list(days, function (response) { 
         q.resolve(response.rows); 
        }, function (error) { 
         q.reject(error) 
        }); 
        return q.promise; 
       }, 

       contact : function(phoneNumber) { 
        var q = $q.defer(); 
        window.plugins.calllog.contact(phoneNumber, function (response) { 
         q.resolve(response); 
        }, function (error) { 
         q.reject(error) 
        }); 
        return q.promise; 
       }, 

       show : function(phoneNumber) { 
        var q = $q.defer(); 
        window.plugins.calllog.show(phoneNumber, function (response) { 
         q.resolve(response); 
        }, function (error) { 
         q.reject(error) 
        }); 
        return q.promise; 
       }, 

       delete : function(phoneNumber) { 
        var q = $q.defer(); 
        window.plugins.calllog.delete(id, function (response) { 
         q.resolve(response); 
        }, function (error) { 
         q.reject(error) 
        }); 
        return q.promise; 
       } 
      } 
     }]); 

3.This is my index.html. 

<body ng-app="lmp"> 
     <div ng-controller="lmpctrl"> 

      <div class="row"> 
       <div class="col">Last Call</div> 
      </div> 
      <div class="row"> 
       <div class="col col-30 col-offset-10">Name</div> 
       <div class="col">{{data.lastCall.cachedName}}</div> 
      </div> 
      <div class="row"> 
       <div class="col col-30 col-offset-10">Number</div> 
       <div class="col">{{data.lastCall.number}}</div> 
      </div> 
      <div class="row"> 
       <div class="col col-30 col-offset-10">Type</div> 
       <div class="col">{{callTypeDisplay(data.lastCall.type)}}</div> 
      </div> 
      <div class="row"> 
       <div class="col col-30 col-offset-10">Date</div> 
       <div class="col">{{data.lastCall.date | date}}</div> 
      </div> 
      <div class="row"> 
       <div class="col col-30 col-offset-10">Duration</div> 
       <div class="col">{{data.lastCall.duration}} seconds</div> 
      </div> 
      <div class="row"> 
       <div class="col col-30 col-offset-10">Acknowledged</div> 
       <div class="col">{{(data.lastCall.new == 1 ? 'yes' : 'no')}}</div> 
      </div> 

     </div> 
     <script src="js/angular.min.js"></script> 
      <script src="js/app.js"></script> 
     <script src="js/ng-cordova.js"></script> 
     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="js/index.js"></script> 

4.I added this following code in my config.xml 
<feature name="CallLog"> 
       <param name="android-package" value="com.ubookr.plugins.CallLogPlugin"/> 
      </feature> 

Am I czegoś brakuje czy nie mam racji przez jakoś. Czy ktoś może mi pomóc. Thanks z góry.

+0

żadnych błędów w konsoli sundar? –

+0

Wczytam ten błąd w przeglądarce TypeError: Nie można odczytać właściwości 'calllog' niezdefiniowanej @SaEChowdary –

+0

@ co to znaczy? W kontroler lub w fabryce? –

Odpowiedz

3

Wygląda na to, że window.plugins jest niezdefiniowany. Co zrobić, aby tego uniknąć jest ręczne bootstrap angularjs na DeviceReady przypadku zamiast używania dyrektywę ng-app, jak wyjaśniono w Cordova + Angularjs + Device Ready

Aby to zrobić, należy usunąć dyrektywę ng-app z elementu <body> i umieść ten JavaScript na górze skryptu app.js :

document.addEventListener('deviceready', function() { 
    var body = document.querySelector('body'); 
    angular.bootstrap(body, ['lmp']); 
}, false); 

to będzie czekać, aż urządzenie jest gotowe do bootstrap kanciasty, zapewniając, że wszystkie urządzenia są dostępne usługi przed ich użyciem.

Powiązane problemy