本文实例讲述了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程序设计有所帮助。
本文地址:https://www.stayed.cn/item/15876
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我