Android入门(二)

1.请求网络

1.1Android中如何请求网络

  • Android中原本自带了Httpclient,用来实现网络请求,但在新版本中已经移除了
  • HttpURLConnection,API简单,体积较小,非常适用于Android这样的移动设备
  • 真实项目中会选择一些网络框架,Android/Java开发大多为Okhttp框架,它支持HTTP,HTTP/2协议。同时有很多特性是HttpURLConnection、Httpclient所不支持的。

1.2添加网络访问权限

AndroidManifest.xml添加以下代码:

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运行结果

Android入门(二)_第1张图片

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"内容:
测试Demo

4.2更改app图标

只需要更改清单文件中icon标签所对应的图标:
android:icon="@mipmap/ic_launcher"

图标适配:应用中有一个mipmap-anydpi-v26目录,如果是8.0及以上的系统就会使用该目录的图标,可以看到他不是个图片,而是XML。如果不想适配,最简单的方法就是删除该目录。
Android入门(二)_第2张图片

4.3创建签名

  1. 点击Bulid-Generate Signed Bundle / APK (生成一个签名或APK)
  2. 选择打包类型
  3. 创建签名
    签名只需创建一次,多个应用可以使用一个签名,也可以使用多个;一个签名文件中可以放多个签名,签名填写信息如下:
    Android入门(二)_第3张图片
    Android入门(二)_第4张图片
    Android入门(二)_第5张图片

4.4打包APK

  1. 填写key和密码
  2. 选择打包类型
    Android入门(二)_第6张图片

你可能感兴趣的:(移动测试)