Android 用APN来获取手机号

jopen 8年前

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


1. [代码]APNNET.java     

01 /**
02 * 电信APN列表
03 * @author wudongdong
04 *
05 */ 
06 public class APNNET { 
07 public static String CTWAP="ctwap"
08 public static String CTNET="ctnet"
09
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的类型  
20  
21  
22  
23 /**
24 * 获得APN类型
25 * @author wudongdong
26 *
27 */ 
28    
29 public class ApnUtil { 
30 private static Uri PREFERRED_APN_URI = Uri 
31 .parse("content://telephony/carriers/preferapn"); 
32    
33 /**
34 * get apntype
35 * @param context
36 * @return
37 */ 
38    
39 public static String getApnType(Context context){ 
40 String apntype="nomatch"
41 Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,nullnullnull,null); 
42 c.moveToFirst(); 
43 String user=c.getString(c.getColumnIndex("user")); 
44 if(user.startsWith(APNNET.CTNET)){ 
45 apntype=APNNET.CTNET; 
46 }else if(user.startsWith(APNNET.CTWAP)){ 
47 apntype=APNNET.CTWAP; 
48
49 return apntype; 
50
51
52    
53 /**
54 * 获得APN类型
55 * @author wudongdong
56 *
57 */ 
58 public class ApnUtil { 
59 private static Uri PREFERRED_APN_URI = Uri 
60 .parse("content://telephony/carriers/preferapn"); 
61    
62    
63 /**
64 * get apntype
65 * @param context
66 * @return
67 */ 
68    
69 public static String getApnType(Context context){ 
70 String apntype="nomatch"
71 Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,nullnullnull,null); 
72 c.moveToFirst(); 
73 String user=c.getString(c.getColumnIndex("user")); 
74 if(user.startsWith(APNNET.CTNET)){ 
75 apntype=APNNET.CTNET; 
76 }else if(user.startsWith(APNNET.CTWAP)){ 
77 apntype=APNNET.CTWAP; 
78
79 return apntype; 
80
81 }
</div> </div> </div>

2. [代码][Java]代码     

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