Более одной команды суперпользователя Android - PullRequest
3 голосов
/ 31 января 2011

Я пытаюсь запустить это:

            String[] hin1 = { "su", "-c",
                    "mount -o remount,rw -t yaffs2 /dev/block/mtdblk3 /system" };
            try {
                Runtime.getRuntime().exec(hin1);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            String[] hin2 = { "su", "-c", "m /system/etc/hosts" };
            try {
                Runtime.getRuntime().exec(hin2);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            String[] hin = { "su", "-c",
                    "cp /sdcard/hosts /system/etc/" };
            try {
                Runtime.getRuntime().exec(hin);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

К сожалению, это работает, только когда я делаю для каждого действия новую кнопку ..: (

Есть ли способ запустить более одной команды одновременно ??

Спасибо

Ответы [ 3 ]

1 голос
/ 19 февраля 2012

Не думаю, что это тоже работает, я попробовал следующий код:

public class GainrootActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


    }

    public void gainroot(View view)
    {
        String[] hin1 = { "su", "-c","chmod 777 dev/test1" };
        try {
                Runtime.getRuntime().exec(hin1);
            } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

  }
}

только кнопка для команды su -c chmod 777 dev / test1 (для изменения разрешения одного файла журнала в каталоге dev), но она не работает. Что не так в этом. Может кто-то указать на то, чего не хватает. Я даже поместил эту строку в Androidmanifest.xml, а также

<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />

Rgds, Саурабй

0 голосов
/ 07 апреля 2011

Вы не позволяете одной команде закончить до начала следующей. Попробуйте добавить waitFor после exec:

Runtime.getRuntime().exec(hin1).waitFor();
0 голосов
/ 31 января 2011

В зависимости от того, как реализована команда su (то есть, если она запускает что-то, приближающееся к способной оболочке, как это было бы в более типичном linux), вы можете объединить несколько команд в одну строку, разделив их точкой с запятой. 1001 *

Вы также можете создать сценарий оболочки, содержащий несколько команд, и использовать su для его запуска, хотя вам может потребоваться поместить его в исполняемый каталог.

...