How to get the cell phone number on the ionic using a cord or phonegap

0

I'm developing an app and need to get the phone number. I researched a lot on the internet and could not find much. One of the examples I found was this: cordova-plugin-sim but I could not get it to return the number. Here is an example of my code:

// Ionic Starter App

// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
angular.module('starter', ['ionic', 'ngCordova'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    if(window.cordova && window.cordova.plugins.Keyboard) {
      // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
      // for form inputs)
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);

      // Don't remove this line unless you know what you are doing. It stops the viewport
      // from snapping when text inputs are focused. Ionic handles this internally for
      // a much nicer keyboard experience.
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})

.controller('mainController', ['$scope','$cordovaGeolocation','$interval',function ($scope,$cordovaGeolocation,$interval) {

  $scope.geolocation = function() {
    $interval(function(){
        var geoSettings = {frequency: 30000, timeout: 100000,enableHighAccuracy: false};
        var geo = $cordovaGeolocation.getCurrentPosition(geoSettings);
        geo.then(function (position) {
                $scope.latitude = position.coords.latitude;
                $scope.longitude = position.coords.longitude;
                console.log($scope.latitude)
                console.log($scope.longitude)
            },
            function error(err) {
                $scope.errors = err;
            }
        );
    },3000);
  }
}]);
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src  'self' 'unsafe-inline' *">

    <title></title>

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
    <link href="css/ionic.app.css" rel="stylesheet">
    -->

    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="js/ng-cordova.min.js"></script>
    <script src="cordova.js"></script>
    <script type="text/javascript">
 document.addEventListener("deviceready",onDeviceReady,false);
 function onDeviceReady(){
 window.plugins.sim.getSimInfo(successCallback, errorCallback);
 }
 function successCallback(result) {
 document.getElementById("simInfo").innerHTML=JSON.stringify(result);
 }
function errorCallback(error) {
 document.getElementById("simInfo").innerHTML=JSON.stringify(result);
 }
 </script>

    <!-- your app's js -->
    <script src="js/app.js"></script>
  </head>
  <body ng-app="starter">

    <ion-pane>
    <ion-header-bar class="bar-stable">
      <h1 class="title">Ionic Blank Starter</h1>
    </ion-header-bar>
    <ion-content ng-controller="mainController">
    <button class="button button-full button-assertive" ng-click="geolocation()">
    Localização
    </button>
    <sapn>Latitude: {{latitude}} </sapn>
    <br>
    <sapn>Longitude: {{longitude}} </sapn>
    <br>
    <sapn>Info: {{infoPhone}} </sapn>
    <p id="simInfo"></p>
    </ion-content>
  </ion-pane>
  </body>
</html>
    
asked by anonymous 13.09.2016 / 16:14

2 answers

1

I do not know what version of the SDK you are using but from 23 you have to ask for read permission.

// Checar permissão function hasReadPermission() { window.plugins.sim.hasReadPermission(successCallback, errorCallback); }

// Pedir permissão function requestReadPermission() { // no callbacks required as this opens a popup which returns async window.plugins.sim.requestReadPermission(); }

    
13.09.2016 / 16:27
1

According to the plugin documentation , the content that represents the phone number is unreliable, and can return a blank (or null) string:

" Notice: the content of phoneNumber is unreliable (see this , this , and this article).

Sometimes phoneNumber is only an empty string.

In addition, in some cases, you may even return an old number that was previously stored on the SIM card.

As I read, the fact that this information is present on the SIM card or not (and whether it is up-to-date or not), even calls the operator - some store this information on the SIM card, and others do not.

In my tests I made a TIM cell phone, several information came back, but did not return the number of the device (I asked for the permission right, as it has to be done from version 23). I want to soon test the same code on other phones and with chips from other carriers.

    
30.05.2017 / 22:31