获取cordova / phonegap的用户电话号码

时间:2014-05-23 23:23:53

标签: android cordova phone-number

我已安装此插件:https://github.com/8enmann/TelephoneNumberPlugin/

并将此代码放在我的angularjs控制器中:

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

没有任何反应,我的代码也被破坏了......

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

4 个答案:

答案 0 :(得分: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中的以下代码替换imei代码

 //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;    
    }    

必需许可:

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

它对我有用。希望能帮助到你。!

答案 1 :(得分:0)

看起来这个插件是使用TelephonyManager实现的。

不幸的是,它在许多设备上都没有工作(特别是在我测试过的设备上都没有)

例如参见:TelephonyManager.getLine1Number() failing?

答案 2 :(得分:0)

您必须添加js代码:

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

已编辑:

我试过这些步骤让它运作起来:

1)我安装了插件,我确信我的项目中的插件文件夹中有“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上得到了结果。

我认为这个插件并不完美,现在我正在使用短信发送客户来获取他们的电话号码......

答案 3 :(得分: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);
    }
  

如果您的手机不允许显示电话号码,那么它将进入失败的阻止状态。

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

  

您可以在“设置”中查看 - >关于电话 - &gt;状态 - &GT; SIM状态。