android網絡連接

android網絡連接

 

轉載的

選自:http://topic.csdn.net/u/20110215/15/ee286e76-214d-4df2-b535-4d6657fbe569.html

 

當一臺手機存在多個活動網絡時,想要控制程序通過指定的網絡進行通訊,請問該如何編碼?
譬如有臺手機同時存在CMNET和WIFI網絡,我想使用WIFI網絡進行網絡通訊而不使用CMNET網絡,請問程序該如何寫?

 

====================
wifi的優先級最高,在wifi可用時想用CMNET關閉wifi
android.net.connectivityService.java

--------------------------------------------- ---------------------------------------------

1.Android認爲終端始終在線,因此,只要網絡可用,始終有一個連接存在,即默認連接。
2.Android中支持的網絡類型有WIFI和Radio網絡,Radio網絡即是通過空中網絡來連接的。
3.Android中Radio網絡按照APN類型分爲Default,MMS,SUPL,DUN,Hipri。
4.Radio中的Default和Wifi都是默認連接,如果Wifi可用,則會將Default對應的連接斷掉,這個是Andriod中網絡管理中處理的,應用程序如果需要使用默認連接,直接構造包發送即可,不參與網絡管理,發不出去就是連接的問題。因此,對於這些默認連接的管理,應用程序是無需進行編程的。

--------------------------------------------- ---------------------------------------------


接入點列表讀取
String id = "";
String apn = "";
String proxy = "";
String name = "";
String port = "";
String type = "";
String mcc = "";
String mnc = "";
String numeric = "";
// 生成動態數組,並且轉載數據
ArrayList<HashMap<String, Object>> mylist = new ArrayList<HashMap<String, Object>>();

Uri uri = Uri.parse("content://telephony/carriers");
Cursor mCursor = getContentResolver()
.query(uri, null, null, null, null);
Log.v("debug", "getApnList=" + mCursor.getCount());
while (mCursor != null && mCursor.moveToNext()) {
// APN id
HashMap<String, Object> map = new HashMap<String, Object>();
id = mCursor.getString(mCursor.getColumnIndex("_id"));
name = mCursor.getString(mCursor.getColumnIndex("name"));
apn = mCursor.getString(mCursor.getColumnIndex("apn"))
.toLowerCase();
proxy = mCursor.getString(mCursor.getColumnIndex("proxy"));
port = mCursor.getString(mCursor.getColumnIndex("port"));
mcc = mCursor.getString(mCursor.getColumnIndex("mcc"));
mnc = mCursor.getString(mCursor.getColumnIndex("mnc"));
numeric = mCursor.getString(mCursor.getColumnIndex("numeric"));
ApnNode apnNode = new ApnNode();
phoneSettedApnID = Integer.valueOf(id).intValue();
apnNode.setName(name);
apnNode.setApn(apn);
apnNode.setProxy(proxy);
apnNode.setPort(port);
apnNode.setMcc(mcc);
apnNode.setMnc(mnc);
apnNode.setNumeric(numeric);
apnNode.setId(phoneSettedApnID);
map.put("apnNode", apnNode);
mylist.add(map);
// do other things...
}
return mylist;

 

 

其它參考資料:

http://www.cnblogs.com/mainroadlee/archive/2011/01/11/Android_Network_State_Checking_And_Setting.html 

 

--------------------------------------------- ---------------------------------------------

private void checkNetworkInfo()
{
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

//mobile 3G Data Network
State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
txt3G.setText(mobile.toString());
//wifi
State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
txtWifi.setText(wifi.toString());

//如果3G網絡和wifi網絡都未連接,且不是處於正在連接狀態 則進入Network Setting界面 由用戶配置網絡連接
if(mobile==State.CONNECTED||mobile==State.CONNECTING)
return;
if(wifi==State.CONNECTED||wifi==State.CONNECTING)
return;


startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));//進入無線網絡配置界面
//startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //進入手機中的wifi網絡設置界面

}

--------------------------------------------- ---------------------------------------------

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章