最近在开发过程中遇到了一个疑难杂症,在App的开发过程中发现有一个实体按键运用的需求,本来以自己现在的打算是直接uniapp去完成这个App的开发,但是在开发过程中才发现需要监听一个特殊的实体按键,因为uniapp本身是直接提供的监听返回键和一些常用实体按键的方法,所以在经过考虑后选择进行Android原生的开发(基于App页面不多,功能不算繁琐,自己也会一点原生的开发)
因为我知道安卓原生是有监听实体按键的onkeydown方法的,我们直接用就好了 (这里省略创建安卓项目的过程)
直接在安卓的onCreate后写onkeydown方法
//重写onkeydown方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
//具体内容
}
因为当特定的实体按键被按下后会有一个键值keycode,这里可以在方法写好后运行一次按下按键在控制台查看其键值或者是具体键的名称,我这里是KEYCODE_EISU,它的键值可以查到是212,然后我们就要在这个方法中去判断,直接上代码:
//重写onKeyDown方法,对按键(不一定是返回按键)监听
public boolean onKeyDown(int keyCode, KeyEvent event) {
//当返回按键被按下
if (keyCode == KeyEvent.KEYCODE_EISU) {
//当键值正确时写具体的内容(必要的步骤)
//失败的操作
@Override
public void onFailure(Request request, IOException e) {
System.out.println(request);
}
//成功的操作
@Override
public void onResponse(final Response response) throws IOException {
//写自己需要的方法
/*我这里是跳转到另一个activity中去*/
// 添加点击响应事件
Intent intent = new Intent(DtActivity.this, MainActivity.class);
//启动
startActivity(intent);
}
}
}
接下来就是需要在这个方法中加入一个对api接口的调用,虽然此处我没有从接口获取数据或者向接口传数据,因为此处仅需要调用一次,在服务器就会有响应,具体需要加其他的操作,大佬们可以自己研究
//重写onKeyDown方法,对按键(不一定是返回按键)监听
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_EISU) {//当返回按键被按下
//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
final Request request = new Request.Builder()
.url("接口地址")
.addHeader("Content-Type", "application/json")
.build();
//new call
Call call = mOkHttpClient.newCall(request);
//请求加入调度
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
System.out.println(request);
}
@Override
public void onResponse(final Response response) throws IOException {
//String htmlStr = response.body().string();
// 添加点击响应事件
Intent intent = new Intent(DtActivity.this, MainActivity.class);
//启动
startActivity(intent);
}
});
}
return false;
}