2014-05-23 206 views
1

我已经安装了这个插件,用户的电话号码:https://github.com/8enmann/TelephoneNumberPlugin/获取与科尔多瓦/ PhoneGap的

,并把这个代码在我angularjs控制器:

var telephoneNumber = cordova.require("cordova/plugin/telephonenumber"); 
telephoneNumber.get(function(result) { 
     alert("result = " + result); 
}, function() { 
    alert("error"); 
}); 

什么也没有发生,我的代码,它的分解...

我看到这是一个比原来更新的叉子,我认为它工作良好。我犯了一个错误,或者最近的cordova版本有错误?

回答

3

嘿,你可以尝试使用Java创建你自己的代码和使用他们使用JavaScript。
例如我用这个JavaScript代码来获取IMEI在我的应用程序的一个:

$imei=window.YourActivityName.get_imei(); 

对于这个工作,你需要启用JavaScript在您的应用程序,并在Java中定义功能get_imei()。

你的Java应该是这个样子:

public class YourActivityName extends CordovaActivity 
{ 
......... 
public void onCreate(Bundle savedInstanceState) 
{ 
....... 
appView.addJavascriptInterface(this, "YourActivityName"); 
super.loadUrl(Config.getStartUrl(), 10000); 
....... 
} 

//Define function to return imei in Java: 
@JavascriptInterface 
public String get_imei() { 
    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    String imei = telephonyManager.getDeviceId(); 
    return imei;  
} 
} 

,你可以在Java下面的代码为

//Define function to return Number in Java: 
    @JavascriptInterface 
    public String get_number() { 
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
    String mPhoneNumber = tMgr.getLine1Number(); 
     return mPhoneNumber;  
    }  

取代IMEI码所需的权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

它的工作为了我。希望能帮助到你。!

+0

你的方法给出了遗漏的类型错误:无法读取未定义的错误 – aaviss

0

你要添加的js代码:

<script src="cordova.js"></script> 
<script src="scripts/telephonenumber.js"></script> 

编辑:

我试图thiese步骤获得它的工作:

1)我安装了插件和II得到肯定,我有“com.simonmacdonald.telephonenumber”文件夹里面插件文件夹在我的项目中。

2)我在插件文件夹(com.simonmacdonald.telephonenumber)的js文件中搜索并替换了所有“cordova/plugin/telephonenumber”和“telephonenumber”。

3)然后,它并没有为我工作,我想包括“telephonenumber.js”我的项目,这个文件可以在com.simonmacdonald.telephonenumber \ WWW发现,所以我将该文件复制到脚本我的项目文件夹,它运作良好。

4)现在这个工作:

var telephoneNumber = cordova.require("telephonenumber"); 
telephoneNumber.get(function (result) { 
    alert(result); 
    callback(result); //callback function is called here 
}, function() { 
    alert("error"); 
}); 

ü应该知道,这个插件并不在某些手机上的工作,我对华硕K00E和GT-5830尝试无果而终,但我得到的结果和S7562 N7003。

我认为,这个插件是不完美的,现在我用短信从发送客户得到他们PHONENUMBER ...

+0

的特性“get_imei”请提供你的答案的详细信息。那个脚本是什么,你从哪里得到它的?等等。 –

+0

该脚本可在https://github.com/macdonst/TelephoneNumberPlugin – oozzal

0

我知道我迟到了。 搜索了很多后,我发现this插件,这对我来说完美的作品... 在您的项目

添加这些插件把这些代码在你的index.js

here $(document).ready(function() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
}); 

function onDeviceReady() { 
     window.plugins.phonenumber.get(success, failed); 

     document.addEventListener("backbutton", onBackKeyDown, false); 
    } 

    function success(phonenumber) { 
     console.log("My number is " + phonenumber); 
    } 

    function failed(phonenumber) { 
     console.log("Error " + phonenumber); 
    } 

If your phone do not allow to show phonenumber then it will go to failed block.

但请注意That使用之前: 有些供应商不会将电话号码发布到SIM卡。

You can check it in Settings-> About Phone-> Status-> SIM Status.

相关问题