2014-10-17 4 views
-2

Я хочу знать, возможно ли выполнить команду «cp» linux для копирования файла из папки с файлами моего приложения в раздел/system/bin (очевидно, с доступом root).Cp command android из папки с ресурсами

 Utility.exec("cp <file:///android_asset/my_file> /system/bin"); 

Этот код действителен для копирования также файлов из активов в систему/bin.

ответ

0

Вот чистый пример, предполагая, что корень приобретается:

AssetManager assetManager = context.getAssets(); 

InputStream is = null; 
OutputStream os = null; 
try 
{ 
    is = assetManager.open("my_file"); 
    os = new FileOutputStream("/system/bin/my_file"); 

    byte[] buffer = new byte[1024]; 
    int length; 

    // copy the file content in bytes 
    while ((length = is.read(buffer)) > 0) 
    { 
     os.write(buffer, 0, length); 
    } 
} 
catch (Exception e) 
{ 
    // Dealing with the exception, log or something 
} 
finally 
{ 
    if (is != null) try { is.close(); } catch (IOException e) {} 
    if (os != null) try { os.close(); } catch (IOException e) {} 
} 
+0

Это не будет работать, так как ** «корень» не относится к процессу андроид приложение **, и это довольно трудно получить пользовательский код java, работающий в типе автономного процесса, к которому он мог бы применяться (если такой хак был доступен на устройстве). –

+0

Полезно знать. Так что это не выполнимо? – ToYonos

+1

Если у вас есть корневой хак, можно получить данные из актива в процессе андроидного приложения и передать его в собственный исполняемый файл, такой как 'dd', вызванный одним аргументом, таким как« of =/system/bin/Это плохая идея". Конечно, система обычно устанавливается только для чтения. –

1

Этот код действителен для копирования также файлов из активов в систему/bin?

No.

Во-первых, команда Linux cp не использует схемы, AFAIK. В лучшем случае это не работает на Ubuntu.

Во-вторых, префикс URL-адреса file:///android_asset/ в значительной степени подходит только для WebView.

В-третьих, активы не являются файлами на устройстве Android. Это записи в ZIP-архиве, который является файлом APK. Команда cp работает с файлами.

Чтобы скопировать ресурс в локальный файл, используйте код AssetManager и код файла Java.