后退按钮在 Android 模拟器上不起作用

问题描述 投票:0回答:2

我尝试启动 android sdk 模拟器,但是当我按后退按钮时出现此错误:

INFO    | Critical: Failed to load https://maps.googleapis.com/maps/api/mapsjs/gen_204?csp_test=true: The 'Access-Control-Allow-Origin' header has a value 'qrc://' that is not equal to the supplied origin. Origin 'qrc://' is therefore not allowed access. (qrc:/html/js/common.js:0, (null))

INFO    | Critical: Failed to load https://maps.googleapis.com/maps/api/mapsjs/gen_204?csp_test=true: The 'Access-Control-Allow-Origin' header has a value 'qrc://' that is not equal to the supplied origin. Origin 'qrc://' is therefore not allowed access. (qrc:/html/js/common.js:0, (null))

我使用Ubuntu并尝试通过终端启动模拟器,我使用google cmdline-tools(最新版本)的avdmanager,这是我尝试使用的AVD:

    Name: my_avd_29ii
    Path: /home/user/.android/avd/my_avd_29ii.avd
  Target: Google APIs (Google Inc.)
          Based on: Android 10.0 (Q) Tag/ABI: google_apis/x86
  Sdcard: 512 MB
android-emulator android-sdk-2.3
2个回答
6
投票

最好的选择是(需要为您安装的每个模拟器完成)

Windows

  1. %USERPROFILE%\.adnroid\avd\<Emulator Name>.avd
  2. 编辑
    config.ini
  3. hw.keyboard=no
    更改为
    hw.keyboard=yes

Mac

  1. ~/.android/avd/<Emulator Name>.avd
  2. 编辑
    config.ini
  3. hw.keyboard=no
    更改为
    hw.keyboard=yes

答案基于这篇文章


3
投票

环顾四周后发现有两种方法可以将硬件事件推送到模拟器:

第一种方法

此方法使用

telnet
,如下所示:

telnet 127.0.0.1 5554
auth <auth-key>
event send EV_KEY:KEY_BACK:0
event send EV_KEY:KEY_BACK:1

这将模拟按下 (0) 和释放 (1) 按钮。

第二种方法

此方法使用

adb
,如下所示:

adb shell input keyevent KEYCODE_BACK

好吧那又怎么样?

尝试了两者后,我意识到

telnet
不起作用,但
adb
确实起作用。我还检查了
emulator
的源代码,发现
telnet
依赖于工具窗口使用的同一组函数。所以这可能是一个错误,我们可以等待更新来修复它,或者......

与此同时

我下载了源代码,编写了一个简单的解决方法,然后构建了它。基本上我不使用按键方法,而是使用

adb
方法。如果你想要这里就是。内容相当庞大,请耐心等待。我包含了一个小脚本来自动替换模拟器,只需运行:

$ chmod +x replace
# ./reaplace path-to-android-sdk

这会向

-use-adb-toolwindow
添加一个新标志
emulator
。当您激活它时,它将(成功)使用 adb 进行“大多数”键盘输入以及主页、后退、应用程序和电源按钮。就像我说的,这是一个快速修复,但对我来说效果很好。 注:

我不知道错误在哪里,所以我没有做任何报告,希望随着更多的人发现这个问题,它会变得更清楚。

© www.soinside.com 2019 - 2024. All rights reserved.