Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
rao
678 / 349 / 100
Регистрация: 02.04.2014
Сообщений: 1,021
#1

Как пользоваться Runtime.getRuntime().exec? - Android

02.04.2014, 23:16. Просмотров 1549. Ответов 6
Метки нет (Все метки)

Здравствуйте!
Скачал с интернета шахматный движок. Записал его на карту памяти в каталог "tmp", а как его запустить не знаю Пробовал так:
Java
1
2
3
4
5
    try {
            proc = Runtime.getRuntime().exec("/mnt/sdcard/tmp/texel-101-ja.bin"); 
        } catch (IOException e) {
            button.setText("ERROR: " + e.getMessage());
        }
но не выходит. (ошибка Error running exec() ...). Посоветуйте что-нибудь пожалуйста.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
03.04.2014, 17:23     Как пользоваться Runtime.getRuntime().exec? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
rao,

Java
1
2
3
4
 } catch (IOException e) {
e.printStackTrace();
            button.setText("ERROR: " + e.getMessage());
        }
и покажите стектрейс ошибки.
rao
678 / 349 / 100
Регистрация: 02.04.2014
Сообщений: 1,021
04.04.2014, 19:36  [ТС]     Как пользоваться Runtime.getRuntime().exec? #3
Сделал как Вы написали и в LogCat увидел следующее:
java.io.IOException: Error running exec(). Command: [/mnt/sdcard/tmp/texel-101-ja.bin] Working Directory: null Environment: null
at java.lang.ProcessManager.exec(ProcessManager.java:224)
at java.lang.Runtime.exec(Runtime.java:189)
at java.lang.Runtime.exec(Runtime.java:275)
at java.lang.Runtime.exec(Runtime.java:210)
at com.example.helloworld.MainActivity.onClick(MainActivity.java:94)
at android.view.View.performClick(View.java:2552)
at android.view.View$PerformClick.run(View.java:9229)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.io.IOException: Permission denied
at java.lang.ProcessManager.exec(Native Method)
at java.lang.ProcessManager.exec(ProcessManager.java:222)
... 15 more
Хотел прочитать остальные 15 строчек направив вывод в файл:
Java
1
2
3
4
5
    File externalDir = Environment.getExternalStorageDirectory();
    textFile = new File(externalDir.getAbsolutePath() + File.separator + "logTextFile.txt" );
    logStream = new PrintStream(textFile);
    e.printStackTrace(logStream);
    logStream.close();
но и там то же самое. Как же увидеть эти скрытые 15 строчек?
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.04.2014, 20:15     Как пользоваться Runtime.getRuntime().exec? #4
rao, система безопасности android не даёт Вам выполнить эту команду.
А ещё попробуйте
Java
1
Runtime.getRuntime().exec(Environment.getExternalStorageDirectory() + "/tmp/texel-101-ja.bin");
rao
678 / 349 / 100
Регистрация: 02.04.2014
Сообщений: 1,021
04.04.2014, 21:43  [ТС]     Как пользоваться Runtime.getRuntime().exec? #5
YuraAAA, а можно каким-нибудь способом узнать что за значения android.permission нужно добавить в манифест? И, наверное, эти разрешения должны учитывать потребности запускаемого процесса (texel-101-ja.bin)? Но он бинарный. Для просмотра его требований необходима специальная утилита (что-нибудь вроде PE.Explorer для Windows)?
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.04.2014, 09:32     Как пользоваться Runtime.getRuntime().exec? #6
rao, chmod 777, вот и все пермишены)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2014, 10:36     Как пользоваться Runtime.getRuntime().exec?
Еще ссылки по теме:

Почему нельзя пользоваться методом getResources() Android
Android Как поменять цвет нажатой кнопки в runtime?
Android Нужно ли пользоваться префиксами m и s для именования переменных или это устарело?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rao
678 / 349 / 100
Регистрация: 02.04.2014
Сообщений: 1,021
05.04.2014, 10:36  [ТС]     Как пользоваться Runtime.getRuntime().exec? #7
YuraAAA, в интернете пишут, что для sdcard этого сделать нельзя, потому что она отформатирована в FAT32, а эта файловая система не поддерживает юниксовые права доступа. Значит надо переносить texel-101-ja.bin во внутреннюю память телефона и делать это там? (т.е. нужно рутирование телефона?) А без root-прав запуск исполняемых файлов linux вообще возможен?
Yandex
Объявления
05.04.2014, 10:36     Как пользоваться Runtime.getRuntime().exec?
Ответ Создать тему
Опции темы

Текущее время: 18:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru