如何以编程方式获取设备的手机号码?

问题描述 投票:3回答:1

我已经尝试使用2种方法来检索我的电话号码,但是它们都不起作用。我用过:

  1. TelephonyManager
  2. SubscriptionManager

我确实获得了网络名称,国家/地区iso和IMEI,但是每当我尝试返回Number时,都不会返回任何内容。

我还为这些添加了所有必需的权限!我的清单如下:

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

使用TelephonyManager的代码:

TelephonyManager phoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
phoneMgr.getLine1Number()

使用SubscriptionManager的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        List<SubscriptionInfo> subscription = SubscriptionManager.from(getApplicationContext()).getActiveSubscriptionInfoList();
        for (int i = 0; i < subscription.size(); i++) {
            SubscriptionInfo info = subscription.get(i);
            Log.e("TAG", "number " + info.getNumber());
            Log.e("TAG", "network name : " + info.getCarrierName());
            Log.e("TAG", "country iso " + info.getCountryIso());
        }
    }

在两次尝试中我一无所获!

他们是否有其他获取电话号码的方式,或者我做错了什么?

java android phone-number telephonymanager android-subscriptionmanager
1个回答
1
投票

您是否已授予READ_PHONE_STATE权限?

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
© www.soinside.com 2019 - 2024. All rights reserved.