Android 用APN来获取手机号

  1. /**
  2. * 电信APN列表
  3. * @author wudongdong
  4. *
  5. */
  6. public class APNNET {
  7. public static String CTWAP="ctwap";
  8. public static String CTNET="ctnet";
  9. }
  10. /**
  11. * 电信APN列表
  12. * @author wudongdong
  13. *
  14. */
  15. public class APNNET {
  16. public static String CTWAP="ctwap";
  17. public static String CTNET="ctnet";
  18. }
  19. //获得APN的类型
复制代码

java代码:
  1. /**
  2. * 获得APN类型
  3. * @author wudongdong
  4. *
  5. */
  6.   
  7. public class ApnUtil {
  8. private static Uri PREFERRED_APN_URI = Uri
  9. .parse("content://telephony/carriers/preferapn");
  10.   
  11. /**
  12. * get apntype
  13. * @param context
  14. * @return
  15. */
  16.   
  17. public static String getApnType(Context context){
  18. String apntype="nomatch";
  19. Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null);
  20. c.moveToFirst();
  21. String user=c.getString(c.getColumnIndex("user"));
  22. if(user.startsWith(APNNET.CTNET)){
  23. apntype=APNNET.CTNET;
  24. }else if(user.startsWith(APNNET.CTWAP)){
  25. apntype=APNNET.CTWAP;
  26. }
  27. return apntype;
  28. }
  29. }
  30.   
  31. /**
  32. * 获得APN类型
  33. * @author wudongdong
  34. *
  35. */
  36. public class ApnUtil {
  37. private static Uri PREFERRED_APN_URI = Uri
  38. .parse("content://telephony/carriers/preferapn");


  39. /**
  40. * get apntype
  41. * @param context
  42. * @return
  43. */
  44.   
  45. public static String getApnType(Context context){
  46. String apntype="nomatch";
  47. Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null);
  48. c.moveToFirst();
  49. String user=c.getString(c.getColumnIndex("user"));
  50. if(user.startsWith(APNNET.CTNET)){
  51. apntype=APNNET.CTNET;
  52. }else if(user.startsWith(APNNET.CTWAP)){
  53. apntype=APNNET.CTWAP;
  54. }
  55. return apntype;
  56. }
  57. }
复制代码

       获得手机号码的话可以传IMSI码到指定接口,接口地址不方便说。但可以透露一点,必须走CTWAP,这也是判断APN类型的原因,发现很多应用如果APN是走代理的话就不能联网,那么再介绍一下用APN设置网络的代理信息。

java代码:
  1. Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null);
  2. c.moveToFirst();
  3. String proxy=c.getString(c.getColumnIndex("proxy"));


  4. if (!"".equals(proxy) && proxy!=null) {
  5. Properties prop = System.getProperties();
  6. System.getProperties().put("proxySet", "true");
  7. prop.setProperty("http.proxyHost", c.getString(c.getColumnIndex("proxy")));
  8. prop.setProperty("http.proxyPort", c.getString(c.getColumnIndex("port")));
  9. String authentication = c.getString(c.getColumnIndex("user"))
  10. + ":" + c.getString(c.getColumnIndex("password"));
  11. String encodedLogin = Base64.encode(authentication);
  12. uc.setRequestProperty("Proxy-Authorization", " BASIC "
  13. + encodedLogin);
  14. }
  15.   
  16. c.close();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值