Android 台灣中文網

標題: 如何實現檔案複製? [打印本頁]

作者: abcd30282000    時間: 2013-12-6 00:05
標題: 如何實現檔案複製?
本帖最後由 abcd30282000 於 2013-12-6 12:16 編輯

我想要複製位於/data/data/底下的文件

讓我的程式取得Root權限之後

還需要怎麼做嗎?


作者: whl    時間: 2013-12-6 19:57
指令
cat 原始檔案 > 目的檔案
作者: abcd30282000    時間: 2013-12-6 21:12
whl 發表於 2013-12-6 19:57
指令
cat 原始檔案 > 目的檔案

請問有沒有範例代碼可以提供我參考?謝謝^^
作者: whl    時間: 2013-12-6 21:38
您是如何取得 root 的權限?
作者: abcd30282000    時間: 2013-12-6 21:50
whl 發表於 2013-12-6 21:38
您是如何取得 root 的權限?

我是用以下的程式碼取得的

try {
    _process = Runtime.getRuntime().exec("su");
    _outputStream = new DataOutputStream(_process.getOutputStream());
    _inputStream = new DataInputStream(_process.getInputStream());
}
catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
作者: whl    時間: 2013-12-6 22:27
本帖最後由 whl 於 2013-12-6 22:54 編輯

  1. try {
  2.     _process = Runtime.getRuntime().exec("su\n");
  3.     _outputStream = new DataOutputStream(_process.getOutputStream());
  4.     _inputStream = new DataInputStream(_process.getInputStream());
  5.     _outputStream.writeBytes("cat 原始檔案 > 目的檔案\n");
  6. }
  7. catch (IOException e) {
  8.     // TODO Auto-generated catch block
  9.     e.printStackTrace();
  10. }
複製代碼

說實在的,既然能夠取到 root 權限,就一定會下指令啊,看到你的問題及回答,說實在的真的有點不知道該怎麼說,學 android 的 root 請先了解 linux。

ps.話說得有點重,只是因為最近論壇中的人很多都不用大腦思考就問問題,看了有點心寒,很多問題都不想回答了,原本以為點到您就知道了,所以話有點重。
作者: abcd30282000    時間: 2013-12-6 23:38
whl 發表於 2013-12-6 22:27
說實在的,既然能夠取到 root 權限,就一定會下指令啊,看到你的問題及回答,說實在的真的有點不知道該怎 ...

不好意思,因為這個代碼是別人貼給我的,所以我真的什麼都不會,不好意思><
作者: hollowaysxp    時間: 2013-12-7 00:13
本帖最後由 hollowaysxp 於 2013-12-7 00:14 編輯

這邊不是專門程式設計版面。建議還是多多Google或是找stackoverflow
很多範例程式碼

cat比較適用於文字檔

用byte做複製連zip檔 聲音檔都可以
Google找到的

這個function是傳檔案位置string
到裡面在new File
我個人是function傳File型態,在main thread就File fin = new File("/xxx/xxx/xxx");
這樣可以在main thread做檢查File來源檔案是否存在??再做Copy動作。
作者: whl    時間: 2013-12-7 07:35
hollowaysxp 發表於 2013-12-7 00:13
這邊不是專門程式設計版面。建議還是多多Google或是找stackoverflow
很多範例程式碼

1.如果覺得 cat 不好,還有 cp 可用。
2.很久沒有去碰需要 root 才能做的東西,小弟不才,想請問您提供的方式可以讀到 /data/data/底下的文件 嗎?
作者: hollowaysxp    時間: 2013-12-7 09:49
1.cat內建rom幾乎都有

但cp則不是
但我自己手機原廠的ROM沒有安裝busybox是沒有cp可以用的,安裝了busybox才有cp可用。

再寫app還要考慮每個rom是否有這個功能。

都取獨root權現後,這個還需要問嗎?

不然root權限拿心酸的。
作者: hollowaysxp    時間: 2013-12-7 09:55
本帖最後由 hollowaysxp 於 2013-12-7 10:02 編輯
whl 發表於 2013-12-6 22:27
說實在的,既然能夠取到 root 權限,就一定會下指令啊,看到你的問題及回答,說實在的真的有點不知道該怎 ...


這種寫法不好

我的寫法捕捉這三個情況
1.沒有su 沒root進到IOException
2.有root等待授權確定授權繼續
3.有root拒絕root授權

我的root有三種檢測,必須抓到以上三種檢測。
這個寫法少了第三個。

而且正常人寫一個su,有時候常常會再main thread停住一下,最好要用來個processdialog來個wait訊息。

如果不介意的話,可以去看Supersu,他有提供原始碼,自己可以編譯成lib使用。

最近還沒有空去實做一下supersu的lib。

目前我還是用這種方法取得root權限。
反正superuser和supersu都OK的,只要有su command下去,就會跳出這個指令授權。
作者: abcd30282000    時間: 2013-12-7 10:33
想請問兩位前輩
關於Root後的教學
有沒有哪個網站或是哪本書可以參考的?
小女在發問之前也Google了好幾天
可是網路上幾乎都是教你怎麼用一鍵Root的軟體
書的話我也到學校圖書館翻過
全部都是基本的教學
最後才在這邊貿然發問的
真的很抱歉><
作者: hollowaysxp    時間: 2013-12-7 11:04
6樓的code
DataOutputStream是下指令的地方
另一個InputStream接收用的反之。

所以這兩個搭配算是一個好用的terminal。
作者: whl    時間: 2013-12-7 11:15
沒錯 cp 並不是每一台機器都有內建,所以我才會一開始建議使用 cat。

其實我也曾經在這個論壇說過很多次,程式有很多種寫法,只是哪一種寫法是最好的程式碼我沒有辦法說出來。至於哪一種寫法算是最好,全部要看程式的走向,選擇最穩定的方式去寫才是最好的寫法。

至於 root 的方式只是對手機內的 Linux 下指令,取得 root 的權限後,後面的程式碼就是在操作 linux 而已,所以 root 並不是要學 android 而是要學 linux.

一鍵Root的軟體 是在教你如何正確安裝 su 這套軟體到妳的手機內而已,並不是教妳如何使用 linux。國內比較知名的 Linux 教學網站是 鳥哥 ,妳可以去看看。
作者: hollowaysxp    時間: 2013-12-7 11:22
所以講完了~你6樓的Code沒有提供如何抓取user拒絕root權限。

你沒有要補充嗎?
作者: abcd30282000    時間: 2013-12-7 11:24
whl 發表於 2013-12-7 11:15
沒錯 cp 並不是每一台機器都有內建,所以我才會一開始建議使用 cat。

其實我也曾經在這個論壇說過很多次, ...

原來Root後要下的指令是Linux
我以為是我找錯語言了
謝謝指導^^
作者: abcd30282000    時間: 2013-12-7 11:44
hollowaysxp 發表於 2013-12-7 11:22
所以講完了~你6樓的Code沒有提供如何抓取user拒絕root權限。

你沒有要補充嗎? ...

我還是先熟讀Linux系統後才能知道問題的癥結點
謝謝你的提點^^
作者: whl    時間: 2013-12-7 20:03
hollowaysxp 發表於 2013-12-7 11:22
所以講完了~你6樓的Code沒有提供如何抓取user拒絕root權限。

你沒有要補充嗎? ...


沒有要補充,原因如下:
1.原始 code 並不是我提供的。
2.我只是點出來如何寫使用 cat 指令的 code 。
3.取不到 root 權限一定要馬上處理嗎?如果一定要處理只憑這幾行 code 那該如何寫?小弟才書學淺,無法憑這幾行程式碼來將後續的 code 寫完,如果您有辦法,麻煩寫出來,好讓樓主參考參考。
作者: hollowaysxp    時間: 2013-12-7 20:29
本帖最後由 hollowaysxp 於 2013-12-7 20:34 編輯
whl 發表於 2013-12-7 20:03
沒有要補充,原因如下:
1.原始 code 並不是我提供的。
2.我只是點出來如何寫使用 cat 指令的 code 。


1.原始code是樓主提供的,看到了。

2.沒有要補充

3.一隻好的程式,應該要捕捉各種例外狀況,減少程式閃退。
   你能保證沒有取得root權限,或是使用者拒絕root權限,後面做的事情不會產生任何例外狀況導致程式閃退???

如果我能提供code作為取得root權限、拒絕root權限,裝置沒有root權限,你要怎麼樣???
上面的code一定還要再補一些code才能抓取拒絕root權限的狀況。

有時候寫程式是要靠自己google一下,而不是提供現成的程式給人參考,如果只是copy and paste並沒有思考。如果有範例程式看懂,那是最好的。

我在板上有自己寫的App root軟體,就是可以捕捉這三種root或沒有root或沒授權root情況。

早就有做到了。
作者: whl    時間: 2013-12-7 21:02
本帖最後由 whl 於 2013-12-7 21:04 編輯
hollowaysxp 發表於 2013-12-7 20:29
1.原始code是樓主提供的,看到了。

2.沒有要補充


Q:你能保證沒有取得root權限,或是使用者拒絕root權限,後面做的事情不會產生任何例外狀況導致程式閃退???
A:不能保證,但不是樓主問的問題,但我之前說過,程式穩定是必要的。

Q:如果我能提供code作為取得root權限、拒絕root權限,裝置沒有root權限,你要怎麼樣???
A:我只想您能提供出來,好讓大家參考參考,畢竟這裡是一個學習的地方。

Q:上面的code一定還要再補一些code才能抓取拒絕root權限的狀況。
A:同意。

Q:有時候寫程式是要靠自己google一下,而不是提供現成的程式給人參考,如果只是copy and paste並沒有思考。如果有範例程式看懂,那是最好的。
A:非常同意,我很早以前在這裡的回答都常常點出來關鍵字而已,這樣學到的才是自己的。

Q:我在板上有自己寫的App root軟體,就是可以捕捉這三種root或沒有root或沒授權root情況。
A:可否把網址貼出來,不要讓大家還要去找。

Q:早就有做到了。
A:我早就相信您做到了,不然您不會回答的那麼深入。
作者: hollowaysxp    時間: 2013-12-7 22:31
本帖最後由 hollowaysxp 於 2013-12-8 00:56 編輯

雖然六樓已經有寫cat source > target
但實際上還是無法運作。

反正無聊,寫個getRoot的APK

APK載點
https://copy.com/YDKjEJRbgSVZ


得到root權限就做ls /dat/data

                               
登錄/註冊後可看大圖


按下按鈕還是可以得知root權限狀態

                               
登錄/註冊後可看大圖


button click事件

                               
登錄/註冊後可看大圖


取得root權限部分程式碼用成白色

                               
登錄/註冊後可看大圖


拒絕root權限

                               
登錄/註冊後可看大圖


按下按鈕取得user是拒絕root權限

                               
登錄/註冊後可看大圖


拒絕root程式碼一樣拿掉部分程式

                               
登錄/註冊後可看大圖


進入成是沒有root權限

                               
登錄/註冊後可看大圖


按下按鈕沒有root權限

                               
登錄/註冊後可看大圖

沒有root裝置程式碼

                               
登錄/註冊後可看大圖



換大大show apk給我看看可以嗎???

一樣的意思我這個是寫一個function所以可以改成runSUComand(String cmd)

這只是隨手寫寫,如果要好一點可以用processdialog+handler+thread這樣才不會在main thread停住~~
作者: whl    時間: 2013-12-9 19:29
本帖最後由 whl 於 2013-12-9 19:50 編輯
hollowaysxp 發表於 2013-12-7 22:31
雖然六樓已經有寫cat source > target
但實際上還是無法運作。


1.這是我兩年多前寫的,可以輕易刷機,當時要找到 root 的寫法,根本就找不到,試了很久,才試出來如何使用 root,也就是和樓主提出的程式碼是一樣的,由於之前主機硬碟損毀沒有備份,也無心於玩刷機,因此下架。
主題美化
2.您的資料很有參考性,很不錯。
3.我就此打住不再筆戰。
作者: hollowaysxp    時間: 2013-12-9 22:16
本帖最後由 hollowaysxp 於 2013-12-9 22:21 編輯
whl 發表於 2013-12-9 19:29
1.這是我兩年多前寫的,可以輕易刷機,當時要找到 root 的寫法,根本就找不到,試了很久,才試出來如何使 ...


看了你的APK,也是高手。
很多都是要下command。

對於這種APP我比較沒興趣是要碰到一些block的東西。

例如dd指令之類的。

萬一手機變brick怕user怪罪。

所以~~~比較不會想寫這種app。

六樓的code少了幾行,不會被執行。






歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1