欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Android 用APN来获取手机号,androidapn

来源: 开发者 投稿于  被查看 44959 次 评论:268

Android 用APN来获取手机号,androidapn


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

1.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;  
    }  
    }  

2.[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();  

用户评论