当我的应用未在前台运行时,我正在将const scans=[]
{
scan().then((scanData)=>{
scans.push(scanData);
renderScanList(scans) //you can figure this part out
})
.catch(err=>{/*display error*/})
}
显示为服务中的webView
,因此,我的alertDialog
通过webView
附加到了屏幕上方法。
WindowManager.addView()
有一个webView
字段,我希望用户可以访问。不幸的是,当用户单击input
字段时,它没有显示供用户允许输入的键盘。
我的input
在webView
内部,其参数如下:
cardView
如果我将手机连接到笔记本电脑,并使用笔记本电脑键盘在输入字段中添加输入,则可以正常工作,只是手机上的键盘没有弹出。
此外,输入位于public WindowManager.LayoutParams getParamsForOpenWebView() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.START | Gravity.TOP;
params.x = left;
params.y = top;
return params;
} else {
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.START | Gravity.TOP;
params.x = left;
params.y = 200;
return params;
}
}
内部,因此与webView
相比,我不能使用View.requestFocus()
来获得焦点。
对于如何请求将焦点集中到EditText
以允许输入的内容,我将非常感激。
答案 0 :(得分:0)
过一会儿,我自己找到了问题的答案。
我尝试了很多不同标志的组合,但没有奏效,除非我尝试过
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
这些标志给出了我想要的结果,并希望它能帮助经历相同结果的人。