Android基於APN獲取手機號的方法

NO IMAGE

本文例項講述了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程式設計有所幫助。

您可能感興趣的文章:

Android實現通訊錄效果——獲取手機號碼和姓名Android獲取手機號碼和運營商資訊的方法android 獲取本機的IP地址和mac實體地址的實現方法Android NDK開發詳細介紹Android中獲取裝置的各種資訊總結Android onCreate( )方法詳細介紹Android 手機獲取手機號實現方法