-1

我正在尝试使用以下代码获取系统电话号码

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = tMgr.getLine1Number();

但它不起作用。

在我的手机中,我使用

设置->关于手机-->状态-电话号码

有没有我可以使用的简单应用程序?,我在土耳其写信。sim卡有区别吗?

4

3 回答 3

0

你可以尝试这样的事情。它完美地工作。

public  String getPhoneNumber(Context context) {
        TelephonyManager mTelephonyMgr;
        mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        String num = mTelephonyMgr.getLine1Number();
        return fillPhoneNumber(num);
    }
private   String fillPhoneNumber(String num) {
    try{
        if (num != null && num.length() > 0) {
            if (num.length() >= 9) {
                num = num.replaceAll("\\D", "");
                if (num.substring(0, 1).equals("8")) {
                    num = "+3" + num;
                } else if (num.substring(0, 1).equals("0")) {
                    num = "+38" + num;
                } else if (num.substring(0, 1).equals("3")) {
                    num = "+" + num;
                }
            }
            return num;
        }

    }catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

注意: 并非所有电话都会返回电话号码。

于 2013-03-05T12:24:29.743 回答
0

并非所有电信运营商都将电话号码存储在 SIM 卡上。仅当设备中的 SIM 卡上存储有手机号码时,您使用的方法才有效。

如果您在手机设置中看不到您的电话号码,则表示它没有存储在 SIM 卡上。如果您绝对需要,您必须手动要求用户将其输入您的应用程序。没有其他办法。

于 2013-03-05T12:24:35.433 回答
0

没有确定的方法可以找到 MSISDN。上述方法仅在 SIM 已存储 MSISDN 时有效。其他解决方法是从 facebook 检索号码。它也可能会或可能不会起作用。唯一确定的方法是使用一些 SMS 网关提供商(例如http://trumpia.com )创建帐户,然后将 SMS 发送到免费号码,然后调用 API 检索 MSISDN。

于 2013-07-29T17:27:06.800 回答