Android基于APN获取手机号的方法
2019/7/7 20:10:03
本文主要是介绍Android基于APN获取手机号的方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文实例讲述了Android基于APN获取手机号的方法。分享给大家供大家参考。具体如下:
之前很多人说无法完全获取手机号,是因为现在有的卡不能获取,有的卡能获取,现在我们可以换一种思路来考虑问题,就是用APN的方式。请看代码:
APNNET.java如下:
/** * 电信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代码如下:
/** 获得手机号码的话可以传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程序设计有所帮助。
这篇关于Android基于APN获取手机号的方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路