Java 如何在不使用位置的情况下获取设备的区号

Java 如何在不使用位置的情况下获取设备的区号,java,android,addressbook,phone-number,Java,Android,Addressbook,Phone Number,我如何获取设备的区号 我有一个导入脚本,其中我抓取了联系人列表中的所有电话号码,这样我就可以将其与数据库中的列表进行比较,并相应地采取行动。然而,我知道有些人不会为其中一些联系人输入区号,因为他们不需要区号作为本地号码。我需要得到那里的区号,这样我就可以把它加到我要查的号码里 不是邮政5位数的邮政编码,而是3位数的区号 我找到的所有方法都希望我到达那里,然后得到它,我不想那样做,要得到3位数字需要做太多的工作。如果联系人没有区号,那么你就假设区号是本地区号。如果是本地区号,则用户的电话号码必须有

我如何获取设备的区号

我有一个导入脚本,其中我抓取了联系人列表中的所有电话号码,这样我就可以将其与数据库中的列表进行比较,并相应地采取行动。然而,我知道有些人不会为其中一些联系人输入区号,因为他们不需要区号作为本地号码。我需要得到那里的区号,这样我就可以把它加到我要查的号码里

不是邮政5位数的邮政编码,而是3位数的区号


我找到的所有方法都希望我到达那里,然后得到它,我不想那样做,要得到3位数字需要做太多的工作。

如果联系人没有区号,那么你就假设区号是本地区号。如果是本地区号,则用户的电话号码必须有此区号。因此,您可以获取用户的电话号码以确定本地区号,并将该区号应用于任何没有区号的号码

要获取用户的电话号码,您可以使用以下代码-

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tm.getLine1Number();
抄袭自问题

然后,您可以通过查看前3位(如果
字符串
的长度为11
char
s,则可能为4位)来提取区号

注意:通过添加以下行,确保将READ_PHONE_STATE权限添加到AndroidManifest.xml文件中-

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

如果联系人没有区号,则假定区号是本地区号。如果是本地区号,则用户的电话号码必须有此区号。因此,您可以获取用户的电话号码以确定本地区号,并将该区号应用于任何没有区号的号码

要获取用户的电话号码,您可以使用以下代码-

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tm.getLine1Number();
抄袭自问题

然后,您可以通过查看前3位(如果
字符串
的长度为11
char
s,则可能为4位)来提取区号

注意:通过添加以下行,确保将READ_PHONE_STATE权限添加到AndroidManifest.xml文件中-

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


这很好,效果也很好,但是有电话簿的平板设备呢。。。没有为平板电脑存储电话号码。因为我在平板电脑上测试时得到一个空值,它崩溃了。当然,我会用try-and-catch来解决crashing和if语句,如果值为null,提醒他们没有电话号码,并询问他们的联系人的本地区号。但你相信还有别的办法吗?@AaronRussell啊。。。。这让事情变得有点复杂。我现在什么都没有,但我会想办法的。不过,我最初的预感是,这是不可能的,因为(1)平板电脑没有电话功能,(2)没有区号,无法使电话号码不那么模棱两可。底线-如果没有电话号码,我不认为除了你说的之外还有其他方法。现在我知道我的问题是如何在不使用定位服务的情况下获取它,也许我可以包装一个if语句,用于if its null,以便尝试使用定位服务获取它?你知道我是怎么做到的吗?我们可以为每个人提供一个完整的证明。因为我知道我们会把一些东西放在一起,所以我继续奖励了赏金并接受了你的回答。我认为定位服务不是一个可靠的方法,特别是如果你使用平板电脑的话。用户可能在任何地方,所以你必须知道他们的当前位置,在某种区号数据库中查找(这不可靠,因为有些地区有多个区号,而有些区号有点少,比如只有手机区号),然后猜测。我认为,如果你真的想使用基于位置的服务,你可以提示输入区号,并使用位置服务生成建议,但仅此而已。这很好,效果也很好,但是对于有电话簿的平板设备呢。。。没有为平板电脑存储电话号码。因为我在平板电脑上测试时得到一个空值,它崩溃了。当然,我会用try-and-catch来解决crashing和if语句,如果值为null,提醒他们没有电话号码,并询问他们的联系人的本地区号。但你相信还有别的办法吗?@AaronRussell啊。。。。这让事情变得有点复杂。我现在什么都没有,但我会想办法的。不过,我最初的预感是,这是不可能的,因为(1)平板电脑没有电话功能,(2)没有区号,无法使电话号码不那么模棱两可。底线-如果没有电话号码,我不认为除了你说的之外还有其他方法。现在我知道我的问题是如何在不使用定位服务的情况下获取它,也许我可以包装一个if语句,用于if its null,以便尝试使用定位服务获取它?你知道我是怎么做到的吗?我们可以为每个人提供一个完整的证明。因为我知道我们会把一些东西放在一起,所以我继续奖励了赏金并接受了你的回答。我认为定位服务不是一个可靠的方法,特别是如果你使用平板电脑的话。用户可能在任何地方,所以你必须知道他们的当前位置,在某种区号数据库中查找(这不可靠,因为有些地区有多个区号,而有些区号有点少,比如只有手机区号),然后猜测。我认为,如果您真的想使用基于位置的服务,您可以提示输入区号并使用位置服务生成建议,但仅此而已。