【问题标题】:How Can I Get device Details when the user run our app?用户运行我们的应用程序时如何获取设备详细信息?
【发布时间】:2015-10-27 06:23:25
【问题描述】:

我是 Angular js 和 ionic 移动应用程序的新手,我遇到了一个错误。我怀疑用户是否在那时打开应用程序,我需要获取设备名称、版本、型号等移动设备详细信息。为此我写了单独的控制器..

<!-- Module File -->

var moduleName = angular.module('InfoModule', ['ngRoute','ui.bootstrap','ngTouch','ngAside','ngDialog','ionic'])
.run(['$rootScope','$location','StorageService', 
      function ($rootScope,$location,StorageService) {
    $rootScope.appInitDone = false;
    $rootScope.currentPage = "home";
    $rootScope.loginStatus = 0;    
}]);

<!-- Controller -->
moduleName.controller('PlatformController', function ($scope,$filter,$rootScope,$apply,$location,$ionicPlatform, $cordovaDevice) {
    $ionicPlatform.ready(function() {
        $scope.$apply(function() {
            // sometimes binding does not work! :/
            // getting device infor from $cordovaDevice
            var device = $cordovaDevice.getDevice();
            console.log(device);
            $scope.manufacturer = device.manufacturer;
            $scope.model = device.model;
            $scope.platform = device.platform;
            $scope.uuid = device.uuid;
            console.log($scope.uuid);
        });
    });
});

<!--This is Home Html File-->
<div ng-controller="PlatformController"></div>
<div ng-controller="HomeController">
        <input type="textbox" name="searchBox" placeholder="Search Form SomeThing"  class="form-control" data-ng-model="someType" ng-click="Search()" style="height:40px;margin-top:50px;"/>
</div>

<!--Injected Links -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionic/1.1.0/css/ionic.min.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ionic/1.1.0/js/ionic.min.js"></script>


I am getting $cordovaDevice Error and $Injector Mobuler error

       Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.12/$injector/modulerr?p0=InfoMod…p%3A%2F%2F127.0.0.1%3A50666%2Fjs%2FScriptFiles%2Fangular.min.js%3A17%3A381)


And also where we need to call the Plat Form Controller to get device information .......Please help me.......If you have any other ideas or examples please give me the solution..please....


And Also I tried another way...In module i wrote another way...Like bellow

<!-- If tried Like this i am Getting Injector Modular like above error -->

var infomoduler = angular.module('InfoModule', ['ngRoute','ui.bootstrap','ngTouch','ngAside','ngDialog','ng-bootstrap-datepicker','angular-loading-bar','infinite-scroll','ionic'])
.run(['$rootScope','$location', 
      function ($rootScope,$location) {
    $rootScope.appInitDone = false;
    $rootScope.currentPage = "home";
    $rootScope.loginStatus = 0;

   ionic.Platform.ready(function(){
    // will execute when device is ready, or immediately if the device is already ready.
  });

  var deviceInformation = ionic.Platform.device();

  var isWebView = ionic.Platform.isWebView();
  var isIPad = ionic.Platform.isIPad();
  var isIOS = ionic.Platform.isIOS();
  var isAndroid = ionic.Platform.isAndroid();
  var isWindowsPhone = ionic.Platform.isWindowsPhone();

  var currentPlatform = ionic.Platform.platform();
  var currentPlatformVersion = ionic.Platform.version();

  ionic.Platform.exitApp(); // stops the app

}]);
var infomoduler = angular.module('InfoModuler', ['ngRoute','ui.bootstrap','ngTouch','ngAside','ngDialog','ng-bootstrap-datepicker','angular-loading-bar','infinite-scroll','ionic'])
.run(['$rootScope','$location','$ionicPlatform','$apply','$cordovaDevice', 
      function ($rootScope,$location,$ionicPlatform,$apply,$cordovaDevice) {

    $rootScope.appInitDone = false;
    $rootScope.currentPage = "home";
    $rootScope.loginStatus = 0;

    ionicPlatFormBuddy();

    function ionicPlatFormBuddy(){
    $ionicPlatform.ready(function() {

        $scope.$apply(function() {
            // sometimes binding does not work! :/
            // getting device infor from $cordovaDevice
            var device = $cordovaDevice.getDevice();
            debugger;
            console.log(device);
            $scope.manufacturer = device.manufacturer;
            $scope.model = device.model;
            $scope.platform = device.platform;
            $scope.uuid = device.uuid;
            console.log($scope.uuid);
        });
    });
    }

}]);

在模块中编写代码是否正确,请给我解决方案..please..

【问题讨论】:

  • 我看不到问题...问题是什么?
  • 我需要在用户运行应用程序时获取移动设备,我为此编写了单独的控制器,我在上面给出了详细信息......
  • 我明白了,您在上面显示的控制器中成功获取了所有详细信息?您想知道如何获取实际的设备名称吗? iPhone 6 例如?
  • 不,我没有在控制器中获得详细信息,是的,我想获得手机(三星 Galaxy 或任何 android 手机或 Ipone 系列)的完整详细信息...
  • 如果我先写了上面的代码,我们会收到模块错误...

标签: javascript android angularjs html ionic


【解决方案1】:

请添加this插件

cordova plugin add org.apache.cordova.device

在您的任何控制器文件中添加以下代码行,

控制器

$ionicPlatform.ready(function() {
     //find application version
     if (window.cordova) {
         var uuid = $cordovaDevice.getUUID();
         var cordova = $cordovaDevice.getCordova();
         var model = $cordovaDevice.getModel();
         var platform = $cordovaDevice.getPlatform();
         var platformVersion = $cordovaDevice.getVersion();
         var mobileDetails = {
             'uuid': uuid,
             'cordova': cordova,
             'model': model,
             'platform': platform,
             'platformVersion': platformVersion,
         };
         console.log('Mobile Phone details:', mobileDetails)
     }
 });

【讨论】:

  • 感谢您的回复,你给了科尔多瓦插件添加 org.apache.cordova.device 我需要添加这个,我的意思是我们需要在脚本标签或其他一些添加 index.html.. .
  • "$cordovaDevice" ,我想要这个注入器......如果我在模块文件中添加这个我得到错误......
  • 你能来Skype吗?
  • 是的,我会的……你能把你的 Skype id 发给我吗?否则 (chaitanya.divi) 是我的 Skype id 你可以给我发送请求吗....
【解决方案2】:

为了访问设备的详细信息,您需要安装 device 插件 (org.apache.cordova.device)。

导航到您的 ionic/cordova 项目(www 所在的位置)并输入以下命令。

cordova plugin add cordova-plugin-device

要了解有关 ngCordova 的更多详细信息,请查看 this link

注意,您需要将 ngCordova 插件添加到您的项目中。您可以从here 或通过 bower 下载它:

bower install ngCordova

在您的代码中包含 ngCordova 脚本,例如

<script src="../js/ng-cordova.js"></script>

【讨论】:

  • "$cordovaDevice" ,我想要这个注入器......如果我在模块文件中添加这个我得到错误......
  • @chai,打开命令提示符 (cmd) 或终端取决于您的操作系统。然后 cd 到您的 ionic 项目(cd 到包含 WWW 文件夹的文件夹)。然后输入“cordova plugin add cordova-plugin-device”。安装设备插件后,cordovaDevice 应该可用。顺便说一句,我假设你已经安装了 ngCordova。如果不是,您需要下载它(bower install ngCordova 或 github.com/driftyco/ng-cordova/tree/master/dist)并将其加载到您的项目中(例如
  • 谢谢,我在构建apk文件并安装在模拟器之前添加并运行该命令。我没有得到信息,也没有得到任何错误。
猜你喜欢
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多