在Android中以编程方式获取电话号码

在Android中以编程方式获取电话号码,android,Android,在我的Android应用程序中,我需要显示设备中可用的Sim卡的电话号码 我尝试了以下代码 private String getPhone() { TelephonyManager phoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (ActivityCompat.checkSelfPermission(activity, wantPermission) != Package

在我的Android应用程序中,我需要显示设备中可用的Sim卡的电话号码

我尝试了以下代码

 private String getPhone() {
    TelephonyManager phoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(activity, wantPermission) != PackageManager.PERMISSION_GRANTED) {
        return "";
    }
    return phoneMgr.getLine1Number();
}

if(Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.M){
List subscription=SubscriptionManager.from(getApplicationContext()).getActiveSubscriptionInfoList();
对于(int i=0;i
}

但两者都只返回null或空字符串

我还添加了清单许可

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

你能帮帮我吗


谢谢。

一些电话公司不允许我从sim卡上获取电话号码,因为我在过去的项目中遇到了同样的问题

(在过去的项目中,我想在simcard号码上发送OTP。用户无法键入其号码。这是出于安全目的。)
所以有些手机会给你正确的输出,而剩下的手机会给你空的输出,我想你无法从android上获得手机号码。有些sp允许读取电话号码,但大多数sp不允许。如果该号码存储在sim卡上,则可能的重复项只会返回该号码。否则它是空的这是获得电话号码的最佳反应
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>