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

Как дать своему приложению привилегии Root? - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.76
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
01.09.2013, 23:14     Как дать своему приложению привилегии Root? #1
Нужно записать данные в файл, который имеет права доступа RW-R--R--, соответственно нужен рут. Следующий код не пишет в файл, получаю эксепшен на строчке.

Java
1
FileWriter fw1 = new FileWriter("/sys/class/leds/LED2_B/brightness");
Весь код программы:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.example.project_1;
 
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
 
public class MainActivity extends Activity {
 
    final String cmd = "su";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        try {
            Process c = Runtime.getRuntime().exec(cmd);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        
        try {
            Thread.currentThread().sleep(10000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        writeFile();
        
        
    }
    
    void writeFile() {
 
        try {
            
            
            //FileWriter fw2 = new FileWriter("/sys/class/leds/LED2_B/led_current");
          
            FileReader fr = new FileReader("/sys/class/leds/LED2_B/brightness");
            char d = (char)fr.read();
            fr.close();
            FileWriter fw1 = new FileWriter("/sys/class/leds/LED2_B/brightness");
            fw1.write("240");
            fw1.close();
            
        } catch (Exception e) {
            e.printStackTrace();//  LED недоступно
            
        }
        
      }
 
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}
Устройство рутованное, при выполнении "su" выскакивает запрос получения прав.

Добавлено через 1 минуту
Как вообще убедится в том, что приложению выданы права root?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2013, 23:14     Как дать своему приложению привилегии Root?
Посмотрите здесь:

root права Android
Android Android Debug Bridgre Root access
Узнать объём кэша выделенный приложению Android
Android Как отправить из одного приложения другому приложению широковещательное намерение?
Android Как подключить api сайта к приложению Android?
Получил рут через Baidu Root. Теперь хочу назад отключить. Как это сделать надежнее всего? Android
Как сделать скриншот экрана без прав Root-а? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.09.2013, 23:48     Как дать своему приложению привилегии Root? #2
может просто пермишены в манифесте не прописаны?
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 00:07  [ТС]     Как дать своему приложению привилегии Root? #3
V0v1k, только что добавил android.permission.ACCESS_SUPERUSER, но что то не помогло... ещё какие то права нужны для этого?
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.09.2013, 00:20     Как дать своему приложению привилегии Root? #4
а что в логах то?
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 00:47  [ТС]     Как дать своему приложению привилегии Root? #5
V0v1k, вобщем то.... ничего.. вот скрин
Миниатюры
Как дать своему приложению привилегии Root?  
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.09.2013, 01:54     Как дать своему приложению привилегии Root? #6
если есть екзепшен, значит он должен быть в логах.

Добавлено через 2 минуты
самая первая строчка гласит что нет такого файла. вы верно путь написали? этот файл без расширения?
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 01:55  [ТС]     Как дать своему приложению привилегии Root? #7
V0v1k, хм, в дебаге, когда исполнение попадает в блок catch, переменная e указывает на NULL...
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.09.2013, 01:59     Как дать своему приложению привилегии Root? #8
слышал что это вроде как баг дебагера.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 01:59  [ТС]     Как дать своему приложению привилегии Root? #9
V0v1k, с именем файла всё в порядке. Я проверял так: не меняя код программы, заходил в Root Explorer и выставлял разрешения rw-rw-rw этому файлу, потом запускал отладку. Всё отлично пишет, всё читает. Как только я меняю разрешения обратно на те, которые стояли по умолчанию (rw-r--r--) сразу получаю исключение. При этом чтение происходит без ошибок (ну оно и очевидно... права на чтение есть у всех).
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.09.2013, 02:13     Как дать своему приложению привилегии Root? #10
sleep вы используете чтобы успеть подтвердить запрос получение прав? может слип вылетает с InterruptedException и writeFile выполняется до подтверждения?
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 02:13  [ТС]     Как дать своему приложению привилегии Root? #11
Помимо всего, я манипулировал с разрешениями того файла и выяснил, что приложение пишет нормально в файл, если его разрешения r--r--rw-, следовательно оно запущено от обычного пользователя. Запрос о правах root нормально выскакивает. Остальные приложения использующие root тоже отлично работают.
Миниатюры
Как дать своему приложению привилегии Root?  
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.09.2013, 02:15     Как дать своему приложению привилегии Root? #12
судя по скрину writeFile уже выполнился, а "Предоставить" вы еще не нажали.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 02:22  [ТС]     Как дать своему приложению привилегии Root? #13
Цитата Сообщение от V0v1k Посмотреть сообщение
sleep вы используете чтобы успеть подтвердить запрос получение прав?
Да, верно.

Цитата Сообщение от V0v1k Посмотреть сообщение
может слип вылетает с InterruptedException и writeFile выполняется до подтверждения?
сейчас проверил... всё нормально, программа выдерживает 10 секунд как и должна.

Скажите, а после выполнения Process c = Runtime.getRuntime().exec("su"); всё приложение должно получить привилегии root или только тот процесс, который находится в "c"?

Добавлено через 2 минуты
V0v1k, скриншот был сделан не спеша, просто что бы показать запрос. В предыдущих тестах я успевал всё подтвердить значительно раньше появления надписи Hello World.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.09.2013, 02:24     Как дать своему приложению привилегии Root? #14
Цитата Сообщение от Пёс Посмотреть сообщение
Скажите, а после выполнения Process c = Runtime.getRuntime().exec("su"); всё приложение должно получить привилегии root или только тот процесс, который находится в "c"?
к сожалению, не имел опыта с рутом.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 02:26  [ТС]     Как дать своему приложению привилегии Root? #15
V0v1k, да вот я тоже, третий день мучаюсь... решил написать приложение под свой телефон. Раньше писал в основном на С++. Спасибо за попытки помочь.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.09.2013, 02:31     Как дать своему приложению привилегии Root? #16
http://stackoverflow.com/questions/1...te-permissions

Добавлено через 36 секунд
http://stackoverflow.com/questions/5...android-device

Добавлено через 1 минуту
если я правильно понял, в этих примерах меняют права файла в рантайме командой chmod прежде чем работать с ними.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2013, 12:16     Как дать своему приложению привилегии Root?
Еще ссылки по теме:

Как прикреплять к приложению два дополнительных файла? Android
Android Как получить доступ к root файлу
Приведение TextView к своему классу Android
Как реализовать дополнения к приложению Android
Android Получить ROOT права

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

Или воспользуйтесь поиском по форуму:
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
02.09.2013, 12:16  [ТС]     Как дать своему приложению привилегии Root? #17
До такого я и сам смог додуматься... Но это как то странно... Можно еще через su, потом echo 123 > [путь] но это опять какой то танец с бубном. Разве никак нельзя сделать это средствами Java или хотя бы Андроид?
Yandex
Объявления
02.09.2013, 12:16     Как дать своему приложению привилегии Root?
Ответ Создать тему

Метки
android, java, root
Опции темы

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