1.請求網絡
1.1Android中如何請求網絡
- Android中原本自帶了Httpclient,用來實現網絡請求,但在新版本中已經移除了
- HttpURLConnection,API簡單,體積較小,非常適用於Android這樣的移動設備
- 真實項目中會選擇一些網絡框架,Android/Java開發大多爲Okhttp框架,它支持HTTP,HTTP/2協議。同時有很多特性是HttpURLConnection、Httpclient所不支持的。
1.2添加網絡訪問權限
AndroidManifest.xml添加以下代碼:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
ps:從Android6.0開始做動態處理權限,將targetSDK設置爲22就不用動態處理權限。
但如果想上傳至Google play,需要的版本最低爲26
1.3添加OkHttp依賴
OkHttp是一個第三方框架,需要添加依賴才能使用。
implementation 'com.squareup.okhttp3:3.14.0'
設置JDK兼容版本:
android {
...
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
1.4發送GET請求
//創建OkHttpClient,建議一個應用只有一個
private OkHttpClient okHttpClient = new OkHttpClient();
public void getNetworkData(View view) {
//創建一個線程,這裏學習的同步請求
//因爲Android不予許在主線程中請求網絡,當然也可以在AsynTask這樣的異步遷移任務裏面同步調用
new Thread(){
@Override
public void run() {
super.run();
//創建一個Request,裏,麪包括你要請求的網址等信息,同時這個類是構建者模式
Request request = new Request.Builder().url("https://www.baidu.com").build();
try {
//調用newCall方法,傳入剛剛創建的Request對象,然後調用execute方法來執行這個請求
Response response = client.newCall(request).execute();
//通過調用response的body上的string方法可以得到流的字符串
String result = response.body().string();
//將返回的字符串打印到日誌,這裏不能直接將數據設置到界面上,因爲子線程不能操作界面(Android規定)
Log.d("TAG",result);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
總結:
- 不管是異步還是同步都是先創建OkHttpClinet,建議全局只有一個
- 然後只有Request的內部類Builder來創建一個Request,並設置網址
- 調用newCall方法傳入request
- 抵用newCall方法返回的Call對應上面的execute來執行這個請求
- 調用response的isSuccessful方法來判斷是否請求成功
- 調用response的body的string方法來獲取一個字符串
- 調用response.body()的其他方法拿到bytes數組,輸入流等信息
1.5運行http請求
在Android9.0上默認禁用所有http請求,如果要使用http,在清單文件中添加:
android:usesCleartestTraffic='true'
1.6運行結果
2.常用的input命令
ps:需先進入adb shell
2.1 輸入文本
input text test
input text "https:www.baidu.com"
2.2按鍵
input keyevent 3
按鍵代碼如下:
KEYCODE_UNKNOWN=0;
KEYCODE_DPAD_CENTER=23;
KEYCODE_R=46;
KEYCODE_MINUS=69;
KEYCODE_SOFT_LEFT=1;
KEYCODE_VOLUME_UP=24;
KEYCODE_S=47;
KEYCODE_EQUALS=70;
KEYCODE_SOFT_RIGHT=2;
KEYCODE_VOLUME_DOWN=25;
KEYCODE_T=48;
KEYCODE_LEFT_BRACKET=71;
KEYCODE_HOME=3;
KEYCODE_POWER=26;
KEYCODE_U=49;
KEYCODE_RIGHT_BRACKET=72;
KEYCODE_BACK=4;
KEYCODE_CAMERA=27;
KEYCODE_V=50;
KEYCODE_BACKSLASH=73;
KEYCODE_CALL=5;
KEYCODE_CLEAR=28;
KEYCODE_W=51;
KEYCODE_SEMICOLON=74;
KEYCODE_ENDCALL=6;
KEYCODE_A=29;
KEYCODE_X=52;
KEYCODE_APOSTROPHE=75;
KEYCODE_0=7;
KEYCODE_B=30;
KEYCODE_Y=53;
KEYCODE_SLASH=76;
KEYCODE_1=8;
KEYCODE_C=31;
KEYCODE_Z=54;
KEYCODE_AT=77;
KEYCODE_2=9;
KEYCODE_D=32;
KEYCODE_COMMA=55;
KEYCODE_NUM=78;
KEYCODE_3=10;
KEYCODE_E=33;
KEYCODE_PERIOD=56;
KEYCODE_HEADSETHOOK=79;
KEYCODE_4=11;
KEYCODE_F=34;
KEYCODE_ALT_LEFT=57;
KEYCODE_FOCUS=80;//*Camera*focus
KEYCODE_5=12;
KEYCODE_G=35;
KEYCODE_ALT_RIGHT=58;
KEYCODE_PLUS=81;
KEYCODE_6=13;
KEYCODE_H=36;
KEYCODE_SHIFT_LEFT=59;
KEYCODE_MENU=82;
KEYCODE_7=14;
KEYCODE_I=37;
KEYCODE_SHIFT_RIGHT=60;
KEYCODE_NOTIFICATION=83;
KEYCODE_8=15;
KEYCODE_J=38;
KEYCODE_TAB=61;
KEYCODE_SEARCH=84;
KEYCODE_9=16;
KEYCODE_K=39;
KEYCODE_SPACE=62;
KEYCODE_MEDIA_PLAY_PAUSE=85;
KEYCODE_STAR=17;
KEYCODE_L=40;
KEYCODE_SYM=63;
KEYCODE_MEDIA_STOP=86;
KEYCODE_POUND=18;
KEYCODE_M=41;
KEYCODE_EXPLORER=64;
KEYCODE_MEDIA_NEXT=87;
KEYCODE_DPAD_UP=19;
KEYCODE_N=42;
KEYCODE_ENVELOPE=65;
KEYCODE_MEDIA_PREVIOUS=88;
KEYCODE_DPAD_DOWN=20;
KEYCODE_O=43;
KEYCODE_ENTER=66;
KEYCODE_MEDIA_REWIND=89;
KEYCODE_DPAD_LEFT=21;
KEYCODE_P=44;
KEYCODE_DEL=67;
KEYCODE_MEDIA_FAST_FORWARD=90;
KEYCODE_DPAD_RIGHT=22;
KEYCODE_Q=45;
KEYCODE_GRAVE=68;
KEYCODE_MUTE=91;
2.3點擊
input tap 120 225 //點擊座標x=120 y=225
2.4滑動
input swipe 300 1000 300 500 //x1,y1滑動到x2,y2,即向上滑動500像素
input swipe 120 225 120 225 2000 //在當前位置,按2秒鐘,相當於長按
3.常用的adb命令
詳見另一篇筆記:https://blog.csdn.net/zytthappy/article/details/79688227
4.項目打包
4.1更改軟件名稱
更改values文件夾下strings.xml中"app_name"內容:
<string name="app_name">測試Demo</string>
4.2更改app圖標
只需要更改清單文件中icon標籤所對應的圖標:
android:icon="@mipmap/ic_launcher"
圖標適配:應用中有一個mipmap-anydpi-v26目錄,如果是8.0及以上的系統就會使用該目錄的圖標,可以看到他不是個圖片,而是XML。如果不想適配,最簡單的方法就是刪除該目錄。
4.3創建簽名
- 點擊Bulid-Generate Signed Bundle / APK (生成一個簽名或APK)
- 選擇打包類型
- 創建簽名
簽名只需創建一次,多個應用可以使用一個簽名,也可以使用多個;一個簽名文件中可以放多個簽名,簽名填寫信息如下:
4.4打包APK
- 填寫key和密碼
- 選擇打包類型