Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
rao
857 / 412 / 158
Регистрация: 02.04.2014
Сообщений: 1,201
#1

Как пользоваться Runtime.getRuntime().exec? - Программирование Android

02.04.2014, 23:16. Просмотров 2003. Ответов 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() ...). Посоветуйте что-нибудь пожалуйста.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 23:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как пользоваться Runtime.getRuntime().exec? (Программирование Android):

Как поменять цвет нажатой кнопки в runtime?
Надо для кнопки менять цвета в нажатом/ненажатом состоянии. Во время работы...

Как пользоваться камерой в AVD
Имеется приложение в котором используется камера, как мне протестировать эту...

Android Studio как пользоваться поиском по коду?
Совсем недавно установил IDE Android Studio. Поэтому совершенно новичок....

Android NDK. Как пользоваться? Когда стоит использовать его вместо Android SDK?
Можно ли писать в нем готовые приложения Android?

Добавить view runTime
Здравствуйте, у меня есть listView, мне нужно например в первый item добавить...

Переопределение метода в Runtime
Создаем класс именно так BroadcastReceiver receiver = new BroadcastReceiver();...

6
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.04.2014, 17:23 #2
Лучший ответ Сообщение было отмечено rao как решение

Решение

rao,

Java
1
2
3
4
 } catch (IOException e) {
e.printStackTrace();
            button.setText("ERROR: " + e.getMessage());
        }
и покажите стектрейс ошибки.
1
rao
857 / 412 / 158
Регистрация: 02.04.2014
Сообщений: 1,201
04.04.2014, 19:36  [ТС] #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 строчек?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
04.04.2014, 20:15 #4
rao, система безопасности android не даёт Вам выполнить эту команду.
А ещё попробуйте
Java
1
Runtime.getRuntime().exec(Environment.getExternalStorageDirectory() + "/tmp/texel-101-ja.bin");
0
rao
857 / 412 / 158
Регистрация: 02.04.2014
Сообщений: 1,201
04.04.2014, 21:43  [ТС] #5
YuraAAA, а можно каким-нибудь способом узнать что за значения android.permission нужно добавить в манифест? И, наверное, эти разрешения должны учитывать потребности запускаемого процесса (texel-101-ja.bin)? Но он бинарный. Для просмотра его требований необходима специальная утилита (что-нибудь вроде PE.Explorer для Windows)?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
05.04.2014, 09:32 #6
rao, chmod 777, вот и все пермишены)
0
rao
857 / 412 / 158
Регистрация: 02.04.2014
Сообщений: 1,201
05.04.2014, 10:36  [ТС] #7
YuraAAA, в интернете пишут, что для sdcard этого сделать нельзя, потому что она отформатирована в FAT32, а эта файловая система не поддерживает юниксовые права доступа. Значит надо переносить texel-101-ja.bin во внутреннюю память телефона и делать это там? (т.е. нужно рутирование телефона?) А без root-прав запуск исполняемых файлов linux вообще возможен?
0
05.04.2014, 10:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2014, 10:36
Привет! Вот еще темы с решениями:

А как пользоваться библиотеками?
В среде разработки Basic4Android V6.80, слева напротив библиотеки поставил...

Runtime.getRuntime().exec()
Всем привет, я что то не пойму как сделать следующее - В папке...

Runtime.getRuntime().exec('cmd /c ' + file.getAbsolutePath());
всем привет. такая проблема. Из базы берется вордовский файл. Открываем...

Компиляция и выполнение java файла используя Runtime.getRuntime().exec(...)
Process p1 = Runtime.getRuntime().exec("javac "+fileDirectory+".java"); -...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru