Android: Zápis do / sys / adresáře

hlasů
1

Jsem vývoji aplikace, která není určena k být propuštěn jako standardní aplikace. Bude to běh na jediném zakořeněné zařízení.

I vyžadují schopnost zapisovat do souboru v / sys / adresáře. Soubor v pochybnost je vlastněn uživatelem root a má -RW-rw-RW- oprávnění.

Jsem si vědom toho, že mohou existovat omezení na VM můj kód běží v rámci které zakazují zápis do této oblasti souborového systému, ale všiml jsem si jinou aplikaci zřejmě to udělat.

Je to možné? Jak by mohlo být dosaženo? Nezáleží na tom, zda je třeba, aby telefon být zakořeněn (dále jen dev jeden jsem pomocí je).


Díval jsem se na jednoduše pomocí FileWriter zapisovat do souboru, což způsobuje následující chybě na .flush():

java.io.IOException: Invalid argument
at org.apache.harmony.luni.platform.OSFileSystem.writeImpl(Native Method)

Také jsem se snažil vykonání příkazu shell z Jávy, oba sa bez „su“. Který se vrátil „zamítnutí žádosti“ a „Oprávnění odepřen“, resp.

Process process = Runtime.getRuntime().exec(echo 'hello' > /sys/file);

Konečně jsem se snažil pomocí NDK a JNI ve věci C, jak někteří zázračně podařilo zapsat do tohoto souboru. Při pokusu o fflushtento soubor přijmu EOF (znamenat chybu došlo).


Všechny návrhy velmi vítány!

Položena 10/08/2010 v 18:06
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
7

Způsob Runtime.getRuntime (). Exec (String) jednoduše zachází vstupní řetězec jako název souboru spustitelný soubor. To nebude akceptovat vaši echo příkaz. Byste měli používat Runtime.getRuntime () exec (String []) namísto, jako jsou:.

String [] cmd = { "/ system / bin / sh", "C", "echo xxx> / sys / soubor", };
Runtime.getRuntime () exec (cmd).

Případně něco napsat do souboru sys, měli byste použít třídu java.io.PrintWriter. Naleznete http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/os/Debug.java a hledat ‚startNativeTracing ()‘ za příklad.

Příčiny, všechny výše může fungovat pouze v případě, že soubor sys je zapisovatelný pro vaši aplikaci.

Odpovězeno 24/09/2010 v 11:38
zdroj uživatelem

hlasů
1

Myslím, že budete muset sdílet aktuální kód a řekněte nám, co jste opravdu snaží. „Neplatný argument“ odpovídá write (2), není-li s EINVAL, který se stane, když se snažíte, aby napsal něco nevhodného. ani oprávnění věc; typ věc. Tento soubor není běžný soubor, je to?

Odpovězeno 24/08/2010 v 06:57
zdroj uživatelem

hlasů
0

Budete muset upravit svůj manifest, takže váš program požádá uživatele root acess.

http://developer.android.com/reference/android/Manifest.permission.html

public static final String FACTORY_TEST od: API Level 1

Spustit jako zkouškou výrobce, běží jako uživatel root. k dispozici pouze tehdy, když je přístroj spuštěn v režimu testování výrobce. Konstanta Hodnota: „android.permission.FACTORY_TEST“

Odpovězeno 10/08/2010 v 18:44
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more