編輯:關於Android編程
本文實例講述了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沉浸式狀態欄攻略
前言這裡不討論[沉浸式]這個詞用得好不好, 大家聽得懂就行. 這篇文章主要是我在實際項目中的一些經驗, 整理出來和大家分享, 歡迎探討. 由於實習一直是996, 沒時間做
Android LinearLayout布局的layout_weight屬性探究
Android布局文件中的layout_weight屬性僅在LinearLayout布局中有效。google推薦:當設置了控件的layout_weight屬性時,該控件相
新浪微博怎麼加好友 新浪微博加粉教程
新浪微博是全中國最主流,最具人氣,當前最火爆的微博產品。用一句話隨意記錄生活,用手機隨時隨地發微博。微博同樣也可以和朋友聊私信,你可以關注你想關注的人,了解
Activity與Fragment易混點歸納
Android開發中Activity和Fragment是非常重要的兩個知識點,這裡我們就分別歸納一下,在使用Activity和Fragment時需要注意的一些事項,特別