【问题标题】:How to Replicate Java console behaviour in Android App如何在 Android 应用程序中复制 Java 控制台行为
【发布时间】:2013-10-25 17:19:07
【问题描述】:

我有一个使用

的 Java SE 应用程序

input = new Scanner(System.in);

获取输入参数

并使用System.out.println("..");

打印结果

由于原始 Java 项目中使用的所有 Java API 在 Android 中也可用,因此我尝试导入所有类而没有任何错误,但现在我不知道如何在 Android 中复制经典 Java 控制台的行为。

我看到有开发者在一些类似 IDE 的应用程序中实现了这一点,但我不知道是怎么做到的。

你能帮帮我吗?

示例: 假设您想在 Android 中移植这个虚拟的 Java SE 应用程序,以维护原始代码的类似控制台的方法

    public static void main(String[] args) {
         System.out.println("Please enter your choice");
         System.out.println("A, B");

         Scanner myScanner = new Scanner(System.in);
         String choice = myScanner .nextLine();
         if (choice.charAt(0) == 'A') {
                ...do something
         }
         else{
                ...do something
         }

}

【问题讨论】:

标签: android console


【解决方案1】:

您可以使用exec() 执行系统命令。 Here是怎么做的:

Runtime r = Runtime.getRuntime();
Process p = r.exec("uname -a"); // here goes your input
p.waitFor();
BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";    
while ((line = b.readLine()) != null) {
    System.out.println(line);
}

更新:

好的,据我了解,您想编译和运行用户编写的代码。我可以看到 3 个选项:

  1. 我认为最难。获取一些 Java 编译器的源代码并将其包含在您的项目中。因此,用户输入文本。你编译它,运行它并给出输出。

  2. 使用已构建的编译器。这需要root。在您的设备上安装javac。然后,在您的应用程序中,您可以使用上面的exec() 代码调用它。

  3. 最简单的一种。使用互联网,例如Ideone.com。在您的应用程序中,您发送代码以在 Ideone 上编译。您取回输出并将其呈现给用户。

【讨论】:

  • 感谢您的回答,但我不明白我应该如何使用它来实现我的目标(控制台应该从 EditText 之类的东西获取输入并打印输出(在 TextView 或另一个 EditText ),以复制标准 Java 控制台(不是 Linux Shell)。我尝试移植的原始程序是一个 Java SE 应用程序,它只使用 Java 控制台来完成所有操作。您能给我更多详细信息吗?
  • @AndreaF 啊,我现在明白了。查看我的更新。
  • 我不想像 IDE 那样编写编译和运行应用程序。我有一个 Java SE 应用程序,它使用标准控制台进行输入和输出,我想将它移植到 Android 中而无需重写太多代码。所有的类都与android兼容,唯一的问题是我不知道如何轻松复制控制台行为,因为我从来没有处理过这种需求。
猜你喜欢
  • 2013-02-11
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
相关资源
最近更新 更多