Android基于APN获取手机号的方法

时间:2021-05-02

本文实例讲述了Android基于APN获取手机号的方法。分享给大家供大家参考。具体如下:

之前很多人说无法完全获取手机号,是因为现在有的卡不能获取,有的卡能获取,现在我们可以换一种思路来考虑问题,就是用APN的方式。请看代码:

APNNET.java如下:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 /** * 电信APN列表 * @author wudongdong * */ public class APNNET { public static String CTWAP="ctwap"; public static String CTNET="ctnet"; } /** * 电信APN列表 * @author wudongdong * */ public class APNNET { public static String CTWAP="ctwap"; public static String CTNET="ctnet"; } //获得APN的类型 /** * 获得APN类型 * @author wudongdong * */ public class ApnUtil { private static Uri PREFERRED_APN_URI = Uri .parse("content://telephony/carriers/preferapn"); /** * get apntype * @param context * @return */ public static String getApnType(Context context){ String apntype="nomatch"; Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null); c.moveToFirst(); String user=c.getString(c.getColumnIndex("user")); if(user.startsWith(APNNET.CTNET)){ apntype=APNNET.CTNET; }else if(user.startsWith(APNNET.CTWAP)){ apntype=APNNET.CTWAP; } return apntype; } } /** * 获得APN类型 * @author wudongdong * */ public class ApnUtil { private static Uri PREFERRED_APN_URI = Uri .parse("content://telephony/carriers/preferapn"); /** * get apntype * @param context * @return */ public static String getApnType(Context context){ String apntype="nomatch"; Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null); c.moveToFirst(); String user=c.getString(c.getColumnIndex("user")); if(user.startsWith(APNNET.CTNET)){ apntype=APNNET.CTNET; }else if(user.startsWith(APNNET.CTWAP)){ apntype=APNNET.CTWAP; } return apntype; } }

Java代码如下:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** 获得手机号码的话可以传IMSI码到指定接口,接口地址不方便说。但可以透露一点,必须走CTWAP,这也是判断APN类型的原因,发现很多应用如果APN是走代理的话就不能联网,那么再介绍一下用APN设置网络的代理信息。 */ Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null); c.moveToFirst(); String proxy=c.getString(c.getColumnIndex("proxy")); if (!"".equals(proxy) && proxy!=null) { Properties prop = System.getProperties(); System.getProperties().put("proxySet", "true"); prop.setProperty("http.proxyHost", c.getString(c.getColumnIndex("proxy"))); prop.setProperty("http.proxyPort", c.getString(c.getColumnIndex("port"))); String authentication = c.getString(c.getColumnIndex("user")) + ":" + c.getString(c.getColumnIndex("password")); String encodedLogin = Base64.encode(authentication); uc.setRequestProperty("Proxy-Authorization", " BASIC " + encodedLogin); } c.close();

希望本文所述对大家的Android程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章