android網路連接
㈠ Android中如何簡單檢測網路是否連接
許可權:
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
代碼:
java">/*
*判斷網路連接是否已開
*true已打開false未打開
**/
publicstaticbooleanisConn(Contextcontext){
booleanbisConnFlag=false;
ConnectivityManagerconManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfonetwork=conManager.getActiveNetworkInfo();
if(network!=null){
bisConnFlag=conManager.getActiveNetworkInfo().isAvailable();
}
returnbisConnFlag;
}
/*沒有網路跳轉到網路設置頁面
*打開設置網路界面
**/
(finalContextcontext){
//提示對話框
AlertDialog.Builderbuilder=newAlertDialog.Builder(context);
builder.setTitle("網路設置提示").setMessage("網路連接不可用,是否進行設置?").setPositiveButton("設置",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
Intentintent=null;
//判斷手機系統的版本即API大於10就是3.0或以上版本
if(Build.VERSION.SDK_INT>10){
intent=newIntent(Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent=newIntent();
ComponentNamecomponent=newComponentName("com.android.settings","com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
context.startActivity(intent);
}
}).setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
dialog.dismiss();
}
}).show();
}
㈡ Android如何獲取網路連接狀態及怎樣調用網路配置界面
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class NetManager {
Context context;
public NetManager(Context context) {
this.context = context;
}
// 判斷網路是否可用的方法
public boolean isOpenNetwork() {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
return false;
}
// 判斷WIFI網路是否可用的方法
public boolean isOpenWifi() {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return mWifi.isConnected();
}
}
public static void netManager(final Context a) {
netManager = new NetManager(a);
if (!netManager.isOpenNetwork()) {
// 如果網路不可用,則彈出對話框,對網路進行設置
Builder builder = new Builder(a);
builder.setTitle("沒有可用的網路");
builder.setMessage("是否對網路進行設置?");
builder.setPositiveButton("確定",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
try {
String sdkVersion = android.os.Build.VERSION.SDK;
if (Integer.valueOf(sdkVersion) > 10) {
intent = new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS);
} else {
intent = new Intent();
ComponentName comp = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
}
a.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
builder.setNegativeButton("取消",
null);
builder.show();
}else {
Toast.makeText(a, "網路不給力,請確認您的網路連接", Toast.LENGTH_LONG).show();
}
}轉載僅供參考,版權屬於原作者。祝你愉快,滿意請點贊哦
㈢ Android網路連接,如何選擇連接類型
在 Froyo(2.2)之前,HttpURLConnection有個重大 Bug,調用close()函數會影響連接池,導致連接復用失效,所以在 Froyo 之前使用HttpURLConnection需要關閉keepAlive。
另外,在 Gingerbread(2.3) HttpURLConnection 默認開啟了 gzip 壓縮,提高了 HTTPS 的性能,Ice Cream Sandwich(4.0) HttpURLConnection 支持了請求結果緩存。
㈣ 如何在Android中實現一個簡單連接網路的應用程序
連接網路,可以讀取網路狀態,網路一下googlewifiapi就可以看到很多使用方法。
㈤ android連接網路伺服器
package com.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
public class TestPost extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
final Map<String, String> params0 = new HashMap<String, String>();
params0.put("username", username);
params0.put("password", password);
final String url0 = "http://192.168.0.11:80/xxxx.php";
Runnable downloadRun = new Runnable() {
@Override
public void run() {
Looper.prepare();
try {
String result0 = sendPostRequest(
params0, url0);
JSONObject jsonObject = new JSONObject(result0);
String status = jsonObject.getString("status");
String message = jsonObject.getString("message");
if (status.equals("success")) {
//成功幹啥
} else {
//失敗幹啥
}
} catch (Exception e) {
//出現異常幹啥
}
}
};
new Thread(downloadRun).start();
}
}, 200);
}
//post請求方法
public String sendPostRequest(Map<String, String> params, String actionurl)
throws Exception {
String URl = actionurl;
StringBuilder sb = new StringBuilder();
if (params != null && !params.isEmpty()) {
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(entry.getKey()).append('=')
.append(URLEncoder.encode(entry.getValue(), "UTF-8"))
.append('&');
}
sb.deleteCharAt(sb.length() - 1);
}
byte[] entitydata = sb.toString().getBytes();// 得到實體的二進制數據
URL url = new URL(URl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setConnectTimeout(10000);
conn.setDoOutput(true);// 如果通過post提交數據,必須設置允許對外輸出數據
conn.setUseCaches(false);// 是否緩存
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length",String.valueOf(entitydata.length));
OutputStream outStream = conn.getOutputStream();
outStream.write(entitydata);
outStream.flush();
outStream.close();
BufferedReader bufferRead = null;
if(conn.getResponseCode() == 200){
bufferRead = new BufferedReader(new InputStreamReader(conn.getInputStream()));
}
String result = "";
String readLine = null;
while ((readLine = bufferRead.readLine()) != null) {
result += readLine;
}
bufferRead.close();
conn.disconnect();
return result;
}
}
我用的是這種方法
㈥ 如何檢查Android網路連接狀態
public class NetworkUtil {
/** 網路不可用 */
public static final int NONETWORK = 0;
/** 是wifi連接 */
public static final int WIFI = 1;
/** 不是wifi連接 */
public static final int NOWIFI = 2;
public static int getNetWorkType(Context context) {
if (!isNetWorkAvalible(context)) {
return NetworkUtil.NONETWORK;
}
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
// cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting())
return NetworkUtil.WIFI;
else
return NetworkUtil.NOWIFI;
}
public static boolean isNetWorkAvalible(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) {
return false;
}
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null || !ni.isAvailable()) {
return false;
}
return true;
㈦ Android 移動數據網路連接管理
真機小米1s測試可用
public static void setDataConnectionState(Context cxt, boolean state) {
ConnectivityManager connectivityManager = null;
Class connectivityManagerClz = null;
try {
connectivityManager = (ConnectivityManager) cxt
.getSystemService("connectivity");
connectivityManagerClz = connectivityManager.getClass();
Method method = connectivityManagerClz.getMethod(
"setMobileDataEnabled", new Class[] { boolean.class });
method.invoke(connectivityManager, state);
} catch (Exception e) {
e.printStackTrace();
}
}
加上許可權:
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
參考資料:http://my.oschina.net/wisedream/blog/198466
㈧ android開發中常用的網路連接方式有哪些
告訴你幾個代碼把,這些都是連接方式:
Activity.startActivities() 常用於在應用程序中間啟動其他的Activity.
TextUtils.isEmpty() 簡單的工具類,用於檢測是否為空
Html.fromHtml() 用於生成一個Html,參數可以是一個字元串.個人認為它不是很快,所以我不怎麼經常去用.(我說不經常用它是為了重點突出這句話:請多手動構建 Spannable 來替換 Html.fromHtml),但是它對渲染從 web 上獲取的文字還是很不錯的。
TextView.setError() 在驗證用戶輸入的時候很棒
Build.VERSION_CODES 這個標明了當前的版本號,在處理兼容性問題的時候經常會用到.點進去可以看到各個版本的不同特性
Log.getStackTraceString() 方便的日誌類工具,方法Log.v()、Log.d()、Log.i()、Log.w()和Log.e()都是將信息列印到LogCat中,有時候需要將出錯的信息插入到資料庫或一個自定義的日誌文件中,那麼這種情況就需要將出錯的信息以字元串的形式返回來,也就是使用static String getStackTraceString(Throwable tr)方法的時候.
LayoutInflater.from() 顧名思義,用於Inflate一個layout,參數是layout的id.這個經常寫Adapter的人會用的比較多.
ViewConfiguration.getScaledTouchSlop() 使用 ViewConfiguration 中提供的值以保證所有觸摸的交互都是統一的。這個方法獲取的值表示:用戶的手滑動這個距離後,才判定為正在進行滑動.當然這個值也可以自己來決定.但是為了一致性,還是使用標準的值較好.
PhoneNumberUtils.convertKeypadLettersToDigits 顧名思義.將字母轉換為數字,類似於T9輸入法,
Context.getCacheDir() 獲取緩存數據文件夾的路徑,很簡單但是知道的人不多,這個路徑通常在SD卡上(這里的SD卡指的是廣義上的SD卡,包括外部存儲和內部存儲)Adnroid/data/您的應用程序包名/cache/ 下面.測試的時候,可以去這裡面看是否緩存成功.緩存在這里的好處是:不用自己再去手動創建文件夾,不用擔心用戶把自己創建的文件夾刪掉,在應用程序卸載的時候,這里會被清空,使用第三方的清理工具的時候,這里也會被清空.
ArgbEvaluator 用於處理顏色的漸變。就像 Chris Banes 說的一樣,這個類會進行很多自動裝箱的操作,所以最好還是去掉它的邏輯自己去實現它。這個沒用過,不明其所以然,回頭再補充.
ContextThemeWrapper 方便在運行的時候修改主題.
Space space是Android 4.0中新增的一個控制項,它實際上可以用來分隔不同的控制項,其中形成一個空白的區域.這是一個輕量級的視圖組件,它可以跳過Draw,對於需要佔位符的任何場景來說都是很棒的。
ValueAnimator.reverse() 這個方法可以很順利地取消正在運行的動畫.我超喜歡.
DateUtils.formatDateTime() 用來進行區域格式化工作,輸出格式化和本地化的時間或者日期。
AlarmManager.setInexactRepeating 通過鬧鈴分組的方式省電,即使你只調用了一個鬧鍾,這也是一個好的選擇,(可以確保在使用完畢時自動調用 AlarmManager.cancel ()。原文說的比較抽象,這里詳細說一下:setInexactRepeating指的是設置非准確鬧鍾,使用方法:alarmManager.setInexactRepeating(AlarmManager.RTC, startTime,intervalL, pendingIntent),非准確鬧鍾只能保證大致的時間間隔,但是不一定準確,可能出現設置間隔為30分鍾,但是實際上一次間隔20分鍾,另一次間隔40分鍾。它的最大的好處是可以合並鬧鍾事件,比如間隔設置每30分鍾一次,不喚醒休眠,在休眠8小時後已經積累了16個鬧鍾事件,而在手機被喚醒的時候,非准時鬧鍾可以把16個事件合並為一個, 所以這么看來,非准時鬧鍾一般來說比較節約能源。
Formatter.formatFileSize() 一個區域化的文件大小格式化工具。通俗來說就是把大小轉換為MB,G,KB之類的字元串。
ActionBar.hide()/.show() 顧名思義,隱藏和顯示ActionBar,可以優雅地在全屏和帶Actionbar之間轉換。
Linkify.addLinks() 在Text上添加鏈接。很實用。
StaticLayout 在自定義 View 中渲染文字的時候很實用。
Activity.onBackPressed() 很方便的管理back鍵的方法,有時候需要自己控制返回鍵的事件的時候,可以重寫一下。比如加入 「點兩下back鍵退出」 功能。
GestureDetector 用來監聽和相應對應的手勢事件,比如點擊,長按,慢滑動,快滑動,用起來很簡單,比你自己實現要方便許多。
DrawFilter 可以讓你在不調用onDrew方法的情況下,操作canvas,比了個如,你可以在創建自定義 View 的時候設置一個 DrawFilter,給父 View 裡面的所有 View 設置反別名。
ActivityManager.getMemoryClass() 告訴你你的機器還有多少內存,在計算緩存大小的時候會比較有用.
ViewStub 它是一個初始化不做任何事情的 View,但是之後可以載入一個布局文件。在慢載入 View 中很適合做佔位符。唯一的缺點就是不支持標簽,所以如果你不太小心的話,可能會在視圖結構中加入不需要的嵌套。
SystemClock.sleep() 這個方法在保證一定時間的 sleep 時很方便,通常我用來進行 debug 和模擬網路延時。
DisplayMetrics.density 這個方法你可以獲取設備像素密度,大部分時候最好讓系統來自動進行縮放資源之類的操作,但是有時候控制的效果會更好一些.(尤其是在自定義View的時候).
㈨ 怎樣檢查Android網路連接狀態
可以調用SDK中的API判斷是否有網路連接,以下為示例代碼:
1、獲取Manager對象
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對象
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判斷當前網路狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED){
return true;
}
4、在AndroidManifest.xml中添加訪問當前網路狀態許可權
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
5.轉跳到網路設置界面
// 跳轉到系統的網路設置界面
Intent intent = null;
// 先判斷當前系統版本
if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
}
context.startActivity(intent);