AndroidManifest.xmljava
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
佈局文件:activity_main.xmlandroid
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="38dp" android:ems="10" android:hint="帳戶"> <requestFocus /> </EditText> <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/name" android:layout_centerHorizontal="true" android:layout_marginTop="17dp" android:ems="10" android:hint="密碼" android:inputType="textPassword" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/password" android:layout_centerHorizontal="true" android:layout_marginTop="17dp" android:gravity="center" android:text="歡迎使用本產品" /> <Button android:id="@+id/exit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/name" android:layout_below="@+id/info" android:layout_marginLeft="16dp" android:layout_marginTop="16dp" android:text="離開" /> <Button android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/exit" android:layout_alignBottom="@+id/exit" android:layout_alignRight="@+id/name" android:layout_marginRight="16dp" android:text="登錄" /> </RelativeLayout>
MainActivity.java服務器
點擊登陸按鈕:網絡
if(nameET!=null&&!nameET.getText().toString().equals("")&&passwordET!=null&&!passwordET.getText().toString().equals("")) { Log.e("登錄", "login"); if(isConnect(MainActivity.this)!=false){ progressDialog = ProgressDialog.show(MainActivity.this, "請稍等", "正在登錄...", true, false); } Thread t = new Thread(new MyRunnable(nameET .getText().toString(), passwordET.getText() .toString())); t.start(); }else{ Log.e("錯誤", "error"); if(nameET==null||nameET.getText().toString().equals("")){ nameET.setError("請輸入名字"); } if(passwordET==null||passwordET.getText().toString().equals("")){ passwordET.setError("請輸入密碼"); } }
開啓線程:ide
public class MyRunnable implements Runnable { String name, passcode; public MyRunnable(String name, String pass) { // TODO Auto-generated constructor stub this.name = name; this.passcode = pass; } @Override public void run() { //***這裏進行網絡鏈接、得到數據data***
//***用get或者post***
//數據data添加到bundle中佈局
Message msg = new Message();
Bundle bundle = new Bundle();// 存放數據post
bundle.putString("returncode", data);this
msg.setData(bundle);spa
handler.sendMessage(msg); // 向Handler發送消息,更新UI線程
}
}
判斷有無網絡:
public static boolean isConnect(MainActivity activity) { // 獲取手機全部鏈接管理對象(包括對wi-fi,net等鏈接的管理) try { ConnectivityManager connectivity = (ConnectivityManager) ((Activity) activity) .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { // 獲取網絡鏈接管理的對象 NetworkInfo info = connectivity.getActiveNetworkInfo(); if (info != null && info.isConnected()) { // 判斷當前網絡是否已經鏈接 if (info.getState() == NetworkInfo.State.CONNECTED) { return true; } } } } catch (Exception e) { // TODO: handle exception Log.v("error", e.toString()); } return false; }
handler機制刷新UI:
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub Bundle b = msg.getData(); String returncode = b.getString("returncode"); if (returncode.equals("0")) { /** 返回碼,0-登陸成功,1-帳號密碼錯誤,2-服務器維護,3-未知錯誤 */ // 關閉ProgressDialog progressDialog.dismiss(); infoTV.setText("登錄成功"); } else if (returncode.equals("1")) { progressDialog.dismiss(); infoTV.setText("帳號密碼錯誤"); infoTV.setTextColor(getResources().getColor(android.R.color.holo_red_dark)); } else if (returncode.equals("2")) { progressDialog.dismiss(); infoTV.setText("服務器維護"); infoTV.setTextColor(getResources().getColor(android.R.color.holo_red_dark)); } else if (returncode.equals("3")) { progressDialog.dismiss(); infoTV.setText( "未知錯誤"); infoTV.setTextColor(getResources().getColor(android.R.color.holo_red_dark)); } else if (StatusCodestr.equals("StatusCode")) { progressDialog.dismiss(); } } };