我已安装此插件:https://github.com/8enmann/TelephoneNumberPlugin/
并将此代码放在我的angularjs控制器中:
var telephoneNumber = cordova.require("cordova/plugin/telephonenumber");
telephoneNumber.get(function(result) {
alert("result = " + result);
}, function() {
alert("error");
});
没有任何反应,我的代码也被破坏了......
我认为这是一个比原版更新的叉子,我觉得它运作良好。我犯了一个错误,或者最新的cordova版本有错误?
答案 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
实现的。
不幸的是,它在许多设备上都没有工作(特别是在我测试过的设备上都没有)
答案 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状态。