簡體   English   中英

無法通過 android 代碼執行 sendevent shell 命令

[英]Unable to execute sendevent shell command through the android code

我嘗試了以下代碼片段來執行 sendevent 的批處理命令,以單擊模擬器上的坐標 44,129。 但它沒有顯示任何結果。 但是,如果我向 shell 提示符發出同一批命令,它能夠成功單擊提到的坐標。

String[] cmmandemulatorarr = {"/system/bin/sendevent /dev/input/event0 3 0 44", "/system/bin/sendevent /dev/input/event0 3 1 129", "/system/bin/sendevent / dev/input/event0 1 330 1", "/system/bin/sendevent /dev/input/event0 0 0 0", "/system/bin/sendevent /dev/input/event0 1 330 0", "/system/ bin/sendevent /dev/input/event0 0 0 0", };

         for (int i = 0; i < cmmandemulatorarr.length; i++) {

         Process process =
         Runtime.getRuntime().exec(cmmandemulatorarr[i]);


         BufferedReader reader = new BufferedReader(
         new InputStreamReader(process.getInputStream()));
         int read;
         char[] buffer = new char[4096];
         StringBuffer output = new StringBuffer();
         while ((read = reader.read(buffer)) > 0) {
         output.append(buffer, 0, read);
         }
         reader.close();
         }

    } catch (IOException e) {

        throw new RuntimeException(e);

    }

這里有什么我遺漏的嗎,或者我必須嘗試其他方法才能通過代碼在某個坐標上獲取點擊事件。

注意::在執行似乎命令已成功執行的代碼時,我在日志中沒有收到任何異常。

問候皮努

但它沒有顯示任何結果。

這是一件好事。

但是,如果我向 shell 提示符發出同一批命令,它能夠成功單擊提到的坐標。

shell 以根級權限運行。 您的 SDK 應用程序不會,除非您根設備並安排以這種方式執行您的代碼。

請記住,並非所有設備都有/system/bin/sendevent命令,並且可以隨時將其刪除。 這不是 Android SDK 的一部分。

我必須嘗試其他方法才能通過代碼在某個坐標上獲得點擊事件。

出於明顯的安全原因,對於普通設備,Android SDK 是不可能的。

在這里你有答案 您需要使用 getevent 找到觸摸事件 id。 Sendevent 使用十進制空格,getevent 使用十六進制。 來自第一個“答案”的代碼適用於 7.0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM