顶
0
踩
1.点击“Network”将显示本机的无线及网络信息。
2.点击"WAP"将自动设接入点为CMWAP。
3.点击“GPRS”将自动设接入点为GPRS。
代码出处:http://blog.csdn.net/sodino/article/details/5916641
代码片段(6)
[代码] [Java]代码
001 | package lab.sodino.network; |
002 | import java.net.InetAddress; |
003 | import java.net.NetworkInterface; |
004 | import java.net.SocketException; |
005 | import java.net.UnknownHostException; |
006 | import java.util.Enumeration; |
007 | import android.app.Activity; |
008 | import android.content.ContentResolver; |
009 | import android.content.ContentValues; |
010 | import android.content.Context; |
011 | import android.database.Cursor; |
012 | import android.net.ConnectivityManager; |
013 | import android.net.NetworkInfo; |
014 | import android.net.Uri; |
015 | import android.net.wifi.WifiInfo; |
016 | import android.net.wifi.WifiManager; |
017 | import android.os.Bundle; |
018 | import android.util.Log; |
019 | import android.view.Menu; |
020 | import android.view.MenuItem; |
021 | import android.view.View; |
022 | import android.view.View.OnClickListener; |
023 | import android.widget.Button; |
024 | import android.widget.TextView; |
025 | /** |
026 | * 1.点击"Network"将输出本机所处的网络环境。 2.点击"WAP"将设定 移动网络接入点为CMWAP。 3.点击"GPRS"将设定 |
027 | * 移动网络接入点为CMNET。 注:自定义移动网络接入点的前提是“设置”→“无线和网络”→“移动网络”处已打勾。 |
028 | */ |
029 | public class NetworkAct extends Activity { |
030 | /** 全部的APN */ |
031 | private static final Uri ALL_APN_URI = Uri |
032 | .parse( "content://telephony/carriers" ); |
033 | /** 当前default的APN记录。 */ |
034 | private static final Uri PREFERRED_APN_URI = Uri |
035 | .parse( "content://telephony/carriers/preferapn" ); |
036 | private TextView textView; |
037 | private Button btnShowNetInfo; |
038 | private Button btnSetCMWAP; |
039 | private Button btnSetGPRS; |
040 | private BtnClickListener btnListener; |
041 | private ContentValues cvWAP; |
042 | private ContentValues cvGPRS; |
043 | public void onCreate(Bundle savedInstanceState) { |
044 | super .onCreate(savedInstanceState); |
045 | setContentView(R.layout.main); |
046 | textView = (TextView) findViewById(R.id.infoPanel); |
047 | textView.setBackgroundColor( 0xffffffff ); |
048 | textView.setTextColor( 0xff0000ff ); |
049 | textView.setTextSize( 15 .0f); |
050 | textView.setScrollBarStyle(TextView.SCROLLBARS_OUTSIDE_OVERLAY); |
051 | btnListener = new BtnClickListener(); |
052 | btnShowNetInfo = (Button) findViewById(R.id.showInfo); |
053 | btnShowNetInfo.setOnClickListener(btnListener); |
054 | btnSetCMWAP = (Button) findViewById(R.id.setCMWAP); |
055 | btnSetCMWAP.setOnClickListener(btnListener); |
056 | btnSetGPRS = (Button) findViewById(R.id.setGPRS); |
057 | btnSetGPRS.setOnClickListener(btnListener); |
058 | initAPNValues(); |
059 | } |
060 | private void initAPNValues() { |
061 | cvWAP = new ContentValues(); |
062 | cvWAP.put( "name" , "移动梦网" ); |
063 | cvWAP.put( "apn" , "cmwap" ); |
064 | // 需要设置为默认接入点则为default |
065 | cvWAP.put( "type" , "default" ); |
066 | cvWAP.put( "proxy" , "10.0.0.172" ); |
067 | cvWAP.put( "port" , "80" ); |
068 | cvWAP.put( "mmsproxy" , "10.0.0.172" ); |
069 | cvWAP.put( "mmsport" , "80" ); |
070 | cvWAP.put( "mmsprotocol" , "2.0" ); |
071 | cvWAP.put( "mmsc" , "http://mmsc.monternet.com" ); |
072 | cvWAP.put( "mcc" , "460" ); |
073 | cvWAP.put( "mnc" , "02" ); |
074 | cvWAP.put( "numeric" , "46002" ); |
075 | cvGPRS = new ContentValues(); |
076 | cvGPRS.put( "name" , "GPRS" ); |
077 | cvGPRS.put( "apn" , "cmnet" ); |
078 | // 需要设置为默认接入点则为default |
079 | cvGPRS.put( "type" , "default" ); |
080 | // cvGPRS.put("proxy", "10.0.0.172"); |
081 | // cvGPRS.put("port", "80"); |
082 | // cvGPRS.put("mmsproxy", "10.0.0.172"); |
083 | // cvGPRS.put("mmsport", "80"); |
084 | cvGPRS.put( "mmsprotocol" , "2.0" ); |
085 | // cvGPRS.put("mmsc", "http://mmsc.monternet.com"); |
086 | cvGPRS.put( "mcc" , "460" ); |
087 | cvGPRS.put( "mnc" , "02" ); |
088 | cvGPRS.put( "numeric" , "46002" ); |
089 | } |
090 | private void showNetworkInfo() { |
091 | getLocalAddress(); |
092 | getWifiAddress(); |
093 | getNetworkInfo(); |
094 | textView.append( "/nList Default Access Point Name:/n" ); |
095 | listAllAPNs(PREFERRED_APN_URI); |
096 | textView.append( "/nList all Access Point Name:/n" ); |
097 | listAllAPNs(ALL_APN_URI); |
098 | } |
099 | private void getLocalAddress() { |
100 | InetAddress iAdd = null ; |
101 | try { |
102 | iAdd = InetAddress.getLocalHost(); |
103 | String line = "" ; |
104 | // line = "HostName=" + iAdd.getHostName() + "/n"; |
105 | // textView.append(line); |
106 | // line = "CanonicalHostName=" + iAdd.getCanonicalHostName() + "/n"; |
107 | // textView.append(line); |
108 | // line = "HostAddress=" + iAdd.getHostAddress() + "/n"; |
109 | // textView.append(line); |
110 | // textView.append("/n"); |
111 | String hostName = iAdd.getHostName(); |
112 | if (hostName != null ) { |
113 | InetAddress[] adds = null ; |
114 | adds = InetAddress.getAllByName(hostName); |
115 | if (adds != null ) { |
116 | for ( int i = 0 ; i < adds.length; i++) { |
117 | iAdd = adds[i]; |
118 | line = "HostName=" + iAdd.getHostName() + "/n" ; |
119 | textView.append(line); |
120 | line = "CanonicalHostName=" |
121 | + iAdd.getCanonicalHostName() + "/n" ; |
122 | textView.append(line); |
123 | line = "HostAddress=" + iAdd.getHostAddress() + "/n" ; |
124 | textView.append(line); |
125 | textView.append( "/n" ); |
126 | } |
127 | } |
128 | } |
129 | } catch (UnknownHostException e1) { |
130 | e1.printStackTrace(); |
131 | } |
132 | try { |
133 | for (Enumeration<NetworkInterface> en = NetworkInterface |
134 | .getNetworkInterfaces(); en.hasMoreElements();) { |
135 | NetworkInterface intf = en.nextElement(); |
136 | for (Enumeration<InetAddress> enumIpAddr = intf |
137 | .getInetAddresses(); enumIpAddr.hasMoreElements();) { |
138 | InetAddress inetAddress = enumIpAddr.nextElement(); |
139 | // if (!inetAddress.isLoopbackAddress()) { |
140 | textView.append( "HostAddress=" |
141 | + inetAddress.getHostAddress() + "/n" ); |
142 | // } |
143 | } |
144 | } |
145 | } catch (SocketException ex) { |
146 | Log.e( "WifiPreference IpAddress" , ex.toString()); |
147 | } |
148 | } |
149 | private void getWifiAddress() { |
150 | WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); |
151 | WifiInfo info = wifi.getConnectionInfo(); |
152 | textView.append( "HiddenSSID=" + info.getHiddenSSID() + "/n" ); |
153 | textView.append( "IpAddress=" + formatIP4(info.getIpAddress()) + "/n" ); |
154 | textView.append( "LinkSpeed=" + info.getLinkSpeed() + "/n" ); |
155 | textView.append( "NetworkId=" + info.getNetworkId() + "/n" ); |
156 | textView.append( "Rssi=" + info.getRssi() + "/n" ); |
157 | textView.append( "SSID=" + info.getSSID() + "/n" ); |
158 | textView.append( "MacAddress=" + info.getMacAddress() + "/n" ); |
159 | } |
160 | private void getNetworkInfo() { |
161 | // 此处输出可用网络类型 |
162 | ConnectivityManager mag = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); |
163 | textView.append( "/nActive:/n" ); |
164 | NetworkInfo info = mag.getActiveNetworkInfo(); |
165 | if (info != null ) { |
166 | textView.append( "ExtraInfo=" + info.getExtraInfo() + "/n" ); |
167 | textView.append( "SubtypeName=" + info.getSubtypeName() + "/n" ); |
168 | textView.append( "TypeName=" + info.getTypeName() + "/n" ); |
169 | textView.append( "Type=" + info.getType() + "/n" ); |
170 | } |
171 | textView.append( "/nWifi:/n" ); |
172 | NetworkInfo wifiInfo = mag |
173 | .getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
174 | textView.append( "ExtraInfo=" + wifiInfo.getExtraInfo() + "/n" ); |
175 | textView.append( "SubtypeName=" + wifiInfo.getSubtypeName() + "/n" ); |
176 | textView.append( "TypeName=" + wifiInfo.getTypeName() + "/n" ); |
177 | textView.append( "Type=" + wifiInfo.getType() + "/n" ); |
178 | NetworkInfo mobInfo = mag |
179 | .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
180 | textView.append( "/nMobile:/n" ); |
181 | textView.append( "ExtraInfo=" + mobInfo.getExtraInfo() + "/n" ); |
182 | textView.append( "SubtypeName=" + mobInfo.getSubtypeName() + "/n" ); |
183 | textView.append( "TypeName=" + mobInfo.getTypeName() + "/n" ); |
184 | textView.append( "Type=" + mobInfo.getType() + "/n" ); |
185 | } |
186 | private void listAllAPNs(Uri apnUri) { |
187 | ContentResolver contentResolver = getContentResolver(); |
188 | Cursor cursor = contentResolver.query(apnUri, null , null , null , null ); |
189 | if (cursor != null ) { |
190 | String temp = "Count=" + cursor.getCount() + " ColumnCount=" |
191 | + cursor.getColumnCount() + "/n" ; |
192 | textView.append(temp); |
193 | String key = "" ; |
194 | while (cursor.moveToNext()) { |
195 | key = "position" ; |
196 | int position = cursor.getPosition(); |
197 | textView.append( "/n" + key + "=" + String.valueOf(position) |
198 | + "/n" ); |
199 | key = "_id" ; |
200 | int id = cursor.getShort(cursor.getColumnIndex(key)); |
201 | textView.append(key + "=" + String.valueOf(id) + "/n" ); |
202 | appendDBColumn(cursor, "name" ); |
203 | appendDBColumn(cursor, "apn" ); |
204 | appendDBColumn(cursor, "type" ); |
205 | appendDBColumn(cursor, "proxy" ); |
206 | appendDBColumn(cursor, "port" ); |
207 | appendDBColumn(cursor, "mmsproxy" ); |
208 | appendDBColumn(cursor, "mmsport" ); |
209 | appendDBColumn(cursor, "mmsprotocol" ); |
210 | appendDBColumn(cursor, "mmsc" ); |
211 | appendDBColumn(cursor, "current" ); |
212 | appendDBColumn(cursor, "mcc" ); |
213 | appendDBColumn(cursor, "mnc" ); |
214 | appendDBColumn(cursor, "numeric" ); |
215 | } |
216 | } |
217 | } |
218 | private void appendDBColumn(Cursor cursor, String key) { |
219 | try { |
220 | String value = cursor.getString(cursor.getColumnIndex(key)); |
221 | textView.append(key + "=" + value + "/n" ); |
222 | } catch (Exception e) { |
223 | System.out.println( "[sodino] " + e); |
224 | } |
225 | } |
226 | private void setNetworkFeature() { |
227 | // 经测试,start和stop都无效。 |
228 | ConnectivityManager connectivityMag = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); |
229 | int stop = connectivityMag.stopUsingNetworkFeature( |
230 | ConnectivityManager.TYPE_WIFI, "*" ); |
231 | textView.append( "stop=" + String.valueOf(stop) + "/n" ); |
232 | int start = connectivityMag.startUsingNetworkFeature( |
233 | ConnectivityManager.TYPE_MOBILE, |
234 | ConnectivityManager.EXTRA_NETWORK_INFO); |
235 | textView.append( "start=" + String.valueOf(start) + "/n" ); |
236 | } |
237 | private void setDefaultAPN(ContentValues value) { |
238 | int _id = findAPNId(value); |
239 | if (_id == - 1 ) { |
240 | _id = insertAPN(value); |
241 | } |
242 | textView.append(value.get( "name" ) + " _id=" + _id + "/n" ); |
243 | ContentValues values = new ContentValues(); |
244 | values.put( "apn_id" , _id); |
245 | ContentResolver resolver = getContentResolver(); |
246 | int updateRow = resolver.update(PREFERRED_APN_URI, values, null , null ); |
247 | textView.append( "updateRow=" + updateRow + "/n" ); |
248 | textView.append( "Set " + value.get( "name" ) |
249 | + " as default netwrok successed!!/n" ); |
250 | } |
251 | private int findAPNId(ContentValues cv) { |
252 | int id = - 1 ; |
253 | ContentResolver contentResolver = getContentResolver(); |
254 | Cursor cursor = contentResolver.query(ALL_APN_URI, null , null , null , |
255 | null ); |
256 | if (cursor != null ) { |
257 | while (cursor.moveToNext()) { |
258 | if (cursor.getString(cursor.getColumnIndex( "name" )).equals( |
259 | cv.get( "name" )) |
260 | && cursor.getString(cursor.getColumnIndex( "apn" )) |
261 | .equals(cv.get( "apn" )) |
262 | && cursor.getString(cursor.getColumnIndex( "numeric" )) |
263 | .equals(cv.get( "numeric" ))) { |
264 | id = cursor.getShort(cursor.getColumnIndex( "_id" )); |
265 | break ; |
266 | } |
267 | } |
268 | } |
269 | return id; |
270 | } |
271 | private int insertAPN(ContentValues value) { |
272 | int apn_Id = - 1 ; |
273 | ContentResolver resolver = getContentResolver(); |
274 | Uri newRow = resolver.insert(ALL_APN_URI, value); |
275 | if (newRow != null ) { |
276 | Cursor cursor = resolver.query(newRow, null , null , null , null ); |
277 | int idIdx = cursor.getColumnIndex( "_id" ); |
278 | cursor.moveToFirst(); |
279 | apn_Id = cursor.getShort(idIdx); |
280 | System.out.println( "[sodino] Insert New id:" + apn_Id); |
281 | } |
282 | return apn_Id; |
283 | } |
284 | public boolean onCreateOptionsMenu(Menu menu) { |
285 | menu.add( "finish" ); |
286 | return true ; |
287 | } |
288 | public boolean onOptionsItemSelected(MenuItem item) { |
289 | if (item.getTitle().equals( "finish" )) { |
290 | finish(); |
291 | } |
292 | return false ; |
293 | } |
294 | /** 将10进制整数形式转换成127.0.0.1形式的IP地址 */ |
295 | private static String formatIP4( long longIP) { |
296 | StringBuffer sb = new StringBuffer( "" ); |
297 | sb.append(String.valueOf(longIP >>> 24 )); |
298 | sb.append( "." ); |
299 | sb.append(String.valueOf((longIP & 0x00FFFFFF ) >>> 16 )); |
300 | sb.append( "." ); |
301 | sb.append(String.valueOf((longIP & 0x0000FFFF ) >>> 8 )); |
302 | sb.append( "." ); |
303 | sb.append(String.valueOf(longIP & 0x000000FF )); |
304 | return sb.toString(); |
305 | } |
306 | private class BtnClickListener implements OnClickListener { |
307 | public void onClick(View v) { |
308 | textView.setText( "" ); |
309 | if (v == btnShowNetInfo) { |
310 | showNetworkInfo(); |
311 | } else if (v == btnSetCMWAP) { |
312 | setDefaultAPN(cvWAP); |
313 | btnSetCMWAP.setEnabled( false ); |
314 | btnSetGPRS.setEnabled( true ); |
315 | } else if (v == btnSetGPRS) { |
316 | setDefaultAPN(cvGPRS); |
317 | btnSetGPRS.setEnabled( false ); |
318 | btnSetCMWAP.setEnabled( true ); |
319 | } |
320 | } |
321 | } |
322 | } |
[代码] [XML]代码
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
02 | < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | android:orientation = "vertical" |
04 | android:layout_width = "fill_parent" |
05 | android:layout_height = "fill_parent" |
06 | > |
07 | < LinearLayout |
08 | android:layout_width = "fill_parent" |
09 | android:layout_height = "wrap_content" |
10 | android:orientation = "horizontal" > |
11 | < Button |
12 | android:id = "@+id/showInfo" |
13 | android:layout_width = "wrap_content" |
14 | android:layout_height = "wrap_content" |
15 | android:layout_weight = "2" |
16 | android:text = "Network" |
17 | ></ Button > |
18 | < Button |
19 | android:id = "@+id/setCMWAP" |
20 | android:layout_width = "wrap_content" |
21 | android:layout_height = "wrap_content" |
22 | android:layout_weight = "1" |
23 | android:text = "WAP" |
24 | ></ Button > |
25 | < Button |
26 | android:id = "@+id/setGPRS" |
27 | android:layout_width = "wrap_content" |
28 | android:layout_height = "wrap_content" |
29 | android:layout_weight = "1" |
30 | android:text = "GPRS" |
31 | ></ Button > |
32 | </ LinearLayout > |
33 | < ScrollView |
34 | android:layout_width = "fill_parent" |
35 | android:layout_height = "wrap_content" > |
36 | < TextView |
37 | android:id = "@+id/infoPanel" |
38 | android:layout_width = "fill_parent" |
39 | android:layout_height = "wrap_content" |
40 | /> |
41 | </ ScrollView > |
42 | </ LinearLayout > |
[代码] [XML]代码
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
02 | < manifest xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | package = "lab.sodino.network" android:versionCode = "1" |
04 | android:versionName = "1.0" > |
05 | < application android:icon = "@drawable/icon" android:label = "@string/app_name" > |
06 | < activity android:label = "@string/app_name" android:name = ".NetworkAct" > |
07 | < intent-filter > |
08 | < action android:name = "android.intent.action.MAIN" /> |
09 | < category android:name = "android.intent.category.LAUNCHER" /> |
10 | </ intent-filter > |
11 | </ activity > |
12 | </ application > |
13 | < uses-sdk android:minSdkVersion = "4" /> |
14 | <!-- 查看网络信息时需要以下权限 --> |
15 | < uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" ></ uses-permission > |
16 | < uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" ></ uses-permission > |
17 | <!-- 设置APN时需要上面的ACCESS_NETWORK_STATE及以下权限 --> |
18 | < uses-permission android:name = "android.permission.WRITE_APN_SETTINGS" ></ uses-permission > |
19 | < uses-permission android:name = "android.permission.INTERNET" ></ uses-permission > |
20 | <!-- 设置网络类型时将要使用 --> |
21 | < uses-permission android:name = "android.permission.CHANGE_NETWORK_STATE" ></ uses-permission > |
22 | </ manifest > |