Android與JavaWeb伺服器互動教程(3)-一個簡單的Android專案
阿新 • • 發佈:2019-01-09
1.前言
是時候該寫Android端了。。。
2.建立專案
3.匯入xUtils3框架
送上xUtil3框架的傳送門
附上jar包的下載地址:
百度雲
七牛雲
以及json的下載地址
七牛雲
百度雲
把jar包拷入libs
新增引用
4.編寫程式碼
4.1 新增許可權
xUtil3框架需要新增許可權才能正常使用
需要新增一下許可權:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name ="android.permission.WRITE_EXTERNAL_STORAGE" />
4.2 新增基礎類
在 src/main/jaba/com.imudges.app.androidclient 下新增一個BaseActivity
程式碼如下:
package com.imudges.app.androidclient;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import org.xutils.x;
/**
* Created by HUPENG on 2017/4/30.
*/
public class BaseActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
x.view().inject(this);
}
}
4.3 修改登入介面資原始檔
activity_login.xml 檔案位於app/src/main/res/layout/app/src/main/res/layout/
修改之後:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
android:gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_username"
android:hint="使用者名稱"
android:imeOptions="actionDone"
android:text=""
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
/>
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="密碼"
android:inputType="textPassword"
android:imeOptions="actionDone"
android:text=""
/>
</LinearLayout>
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登入"
android:layout_weight="0.01"
android:textColor="#ffffff"
android:textSize="17dp"
/>
</LinearLayout>
4.4 完成登入介面邏輯
注意,伺服器的地址要改成你自己的伺服器的地址
package com.imudges.app.androidclient;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;
@ContentView(R.layout.activity_login)
public class LoginActivity extends BaseActivity {
@ViewInject(R.id.et_username)
private EditText etUsername;
@ViewInject(R.id.et_password)
private EditText etPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Event(value = R.id.btn_login,type = View.OnClickListener.class)
private void onLoginBtnClick(View view){
/**
* 這裡填寫你的伺服器所在的IP地址替換我的ip地址
* */
try{
RequestParams params = new RequestParams("http://183.175.12.160:8899/login.action");
params.addQueryStringParameter("username",etUsername.getText().toString());
params.addQueryStringParameter("password",etPassword.getText().toString());
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String s) {
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = (JsonObject) jsonParser.parse(s);
int code = jsonObject.get("code").getAsInt();
if (code == 0){
//執行登入成功操作
Toast.makeText(LoginActivity.this,jsonObject.get("msg").getAsString(),Toast.LENGTH_SHORT).show();
}else {
//執行登入失敗操作
Toast.makeText(LoginActivity.this,jsonObject.get("msg").getAsString(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(Throwable throwable, boolean b) {
}
@Override
public void onCancelled(CancelledException e) {
}
@Override
public void onFinished() {
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}
4.5 在包下新建MyApplication
package com.imudges.app.androidclient;
import android.app.Application;
import org.xutils.x;
/**
* Created by HUPENG on 2017/4/30.
*/
/**
* Created by yangyang on 2017/4/24.
*/
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);//Xutils初始化
x.Ext.setDebug(BuildConfig.DEBUG); // 是否輸出debug日誌, 開啟debug會影響效能.
}
}
在清單檔案中配置Application
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.imudges.app.androidclient">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name=".MyApplication">
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>