欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-08 10:38:28
本文实例讲述了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程序设计有所帮助。