Android入门(二)
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_8targetCompatibility JavaVersion.VERSION_1_8}
}
1.4发送GET请求
//创建OkHttpClient,建议一个应用只有一个private OkHttpClient okHttpClient = new OkHttpClient();
public void getNetworkData(View view) {//创建一个线程,这里学习的同步请求//因为Android不予许在主线程中请求网络,当然也可以在AsynTask这样的异步迁移任务里面同步调用new Thread(){@Overridepublic 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和密码
- 选择打包类型
Android入门(二)相关推荐
- android入门二
https://www.runoob.com/w3cnote/android-tutorial-seekbar.html adb devices 列出所有的设备 adb shell 挂载到lin ...
- Android入门(十二)SQLite事务、升级数据库
原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...
- 最强Android入门开发指南,帮你打通Android的任督二脉
Android 新手想要入门,很容易会遇到各类困难和学习瓶颈.没有一个好学的学习方向,学习规划,学习教程,这都是新手会面临的问题. 很多人会在百度上搜索,查阅相关资料.但是网上搜索的很多资料,都是断片 ...
- Android入门教程(二)
Hello World 项目 首先当我们启动Android Studio的虚拟机时,可以看到第一个项目Hello World,那么虚拟机中的Hello World!是如何书写的呢? 看看虚拟机运行结果 ...
- 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity
问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...
- Android入门:通过JSON数据与服务器进行通信
我们完成"Android入门:通过XML数据与服务器进行通信"同样的功能,只是数据传输使用JSON而不是XML: 注意点: (1)当返回JSON时,content-type为tex ...
- arcgis for android(二)显示二维地图
1.上一节讲了 arcgis for android 入门与提高(一)配置环境https://blog.csdn.net/HB_Programmer/article/details/119967868 ...
- conan入门(二):conan 服务配置-密码管理及策略
conan 服务配置 密码管理及策略配置 第一次以管理员身份(admin)使用默认密码(password)WEB登录入JFrog Artifactory后台时,系统就提示要求我修改密码,因为现有密码太 ...
- Android入门之简易计算器(一)
Android Android入门之简易计算器(一) 文章目录 Android Android入门之简易计算器(一) @[TOC](文章目录) 前言 一.项目结构 二.界面显示 三.前端界面 1.界面 ...
最新文章
- 年薪 50 万!淘宝重金招聘,35 岁以上优先,学历不限
- vue案例 - vue-awesome-swiper实现h5滑动翻页效果
- luogu P3817 小A的糖果
- NSUserDefaults
- 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能...
- sum of two integers
- android MPV架构快速实现,不是所有的MPV都叫GL8,一体化智能座舱体验来袭
- Manjaro 常用软件安装
- 网络游戏防沉迷的理想与现实
- css3优惠卷上方锯齿_CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式
- 让WMP12成为万能播放器
- 刚开始使用push遇到的小问题
- 大数据促进中小企业快递航运战略三种方法
- 按键式计算器——人机交互的变革
- 拜水野三坡 求得一身财气
- 2020秋季《大数据与物联网》期末答案参考
- MacBook 通过Boot Camp安装win7双系统时提示缺少所需的CD/DVD驱动器设备驱动程序。
- 精彩回顾|Meetup 合肥站--云原生技术沙龙
- python 发包的方法_python requests 三种发包
- 矿用巷道巡检机器人_吕梁矿用皮带纵向撕裂监测装置 巷道巡检机器人