1

好吧,标题说得很好,但问题是这样的:

我有一个带有命令的 .sh 文件,su touch /sdcard/test.txt以查看它是否有效。但是我不知道在用户安装应用程序时如何包含它。我怎么能添加它?我考虑过使用类似的东西:

su
touch /sdcard/folder/path/test.sh
vi /sdcard/folder/path/test.sh

并在那里创建 .sh 文件,但我不知道如何发送esc密钥才能:wq知道如何执行该文件,是的,我的手机已植根。我只需要知道如何在安装 apk 时包含它和/或如何发送esc密钥来完成vi命令。

谢谢

编辑:我创建了一个.sh名为的文件test.sh,并创建了一个适用于 root 用户的应用程序。该test.sh文件只需要touch /sdcard/test.txt查看我的 java 代码是否有效。我用一个按钮创建了一个简单的应用程序,在该按钮内单击我有这个:

test.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                try
                {
                    Process proc = Runtime.getRuntime().exec(new String[] {"su","-c","sh ./path where .sh will be/test.sh"});
                    proc.waitFor();
                }
                catch (Exception ex)
                {
                    String TAG = null;
                    Log.i(TAG, "Doesn't work", ex);
                }
            }
        });

但我不知道如何或在哪里添加我的test.sh文件,所以当用户安装我的应用程序时,文件就在那里。我试过包括

Process proc = Runtime.getRuntime().exec(new String[] {"su","-c","touch /sdcard/prueba.sh ; vi /sdcard/prubea.sh ; ****Don't know how to edit, use ESC key and :wq****});
                    proc.waitFor();

现在,当我单击我的按钮时,应用程序一直在运行,等待我结束vi命令,但我不知道该怎么做,因为我必须按下esc才能:wq......希望这能说清楚

4

2 回答 2

1

如果您确定手机上安装了 vi,只需在 ascii 中查找 ESC 的十六进制代码并将其写入输入缓冲区。

这是一个很好的 ASCII 图表cppreference.com

于 2012-10-04T20:49:19.963 回答
0

听起来您正在尝试在安装时执行操作。This How to start android service on installation表明这是不可能的。

于 2012-10-04T21:01:28.060 回答