android讀文件
❶ android怎麼在代碼里獲得系統文件的讀寫許可權
android怎麼在代碼里獲得系統文件的讀寫許可權
1、必須是Android系統開發人員,否則你無法修改init.rc等文件。
2、你的應用程序必須要獲得system許可權。
在應用層 你要想用代碼獲得系統文件許可權,除非你手機root了
要麼你自己做rom。 自己修改 init,rc
本來以為就沒有辦法在應用程序這一層改系統時間了,後來在網上搜了好久,知道這個目的還是可以達到的。
第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯:
1. 在應用程序的AndroidManifest.xml中的manifest節點中加入
android:sharedUserId="android.uid.system"這個屬性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。
第二個辦法麻煩點,不過不用開虛擬機跑到源碼環境下用make來編譯:
1. 同上,加入android:sharedUserId="android.uid.system"這個屬性。
2. 使用eclipse編譯出apk文件,但是這個apk文件是不能用的岩芹薯。
3. 用壓縮軟體打開apk文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件。
4. 使用目標系統的platform密鑰來重新給apk文件簽名。這步比較麻煩,
首先找到密鑰文件,在我的Android源碼目錄中的位置
是"build argetproctsecurity",下面的platform.pk8和platform.x509.pem
兩個文件。
然後用Android提供的Signapk工具來簽名,signapk的源代碼是
在"build oolssignapk"下,
用法為"signapk platform.x509.pem platform.pk8 input.apk output.apk",
文件名最好使用絕對路徑防止找不到,也可以修改源代碼直接使用。
這樣最後得到的apk和第一個方法是一樣的。
最後解釋一下原理,首先加入android:sharedUserId="android.uid.system"這個屬性。通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中。那麼把程序的UID配成android.uid.system,也就是要讓程首罩序運行在系統進程中,這樣就有許可權來修改系統時間了。
只是加入UID還不夠,如果這時候安裝APK的話發現無法安裝,提示簽名不符,原因是程序想要運行在系統進程中還要有目標系統的platform
key,就是上面第二個方法提到的platform.pk8和platform.x509.pem兩個文件。用這兩個key簽名後apk才真正可以放入系統進程中。第一個方法中加入LOCAL_CERTIFICATE := platform其實就是用這兩個key來簽名。這也有一個問題,就是這樣生成的程序只有在原始的Android系統或者是自己編譯的系統中才可以用,因為這樣的系統才可以拿到 platform.pk8和platform.x509.pem兩個文件。要是別家公司做的Android上連安裝都安裝不了。試試原始的Android 中的key來簽名,程序在模擬器上運行OK,不過放到G3上安裝直接提示"Package ... has no signatures that match those in shared user android.uid.system",這樣也是保護了系統的安全。
java代碼
1、必須是Android系統開發人員,否則你無法修改init.rc等文件。 2、你的應用程序必須要獲得system許可權。
在應用層 你要想用代碼獲得系統文件許可權,除非你手機root了
要麼你自己坐rom。。。。 自己修改 init,rc
1、必須是Android系統開發人員,否則你無法修改init.rc等文件。 2、你的應用程序必須要獲得system許可權。 在應用層 你要想用代粗者碼獲得系統文件許可權,除非你手機root了 要麼你自己坐rom。。。。 自己修改 init,rc
❷ android 讀寫文件需要哪些許可權
<!--往sdcard中寫入數據的許可權 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--在sdcard中創建/刪除文件的許可權 --><uses-permission android:name="android.permission.MOUNT_U
android中的apk必須簽名
這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。
重要的是,android系統有的許可權是基於簽名的。比如:system等級的許可權有專門對應的簽名,簽名不對,許可權也就獲取不到。默認生成的APK文件是debug簽名的。
獲取system許可權時用到的簽名,見:如何使Android應用程序獲取系統許可權。基於UserID的進程級別的安全機。這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。重要的是,android系統有的許可權是基於簽名的。
❸ 求問android怎麼在代碼里獲得系統文件的讀寫許可權
求問android怎麼在代碼里獲得系統文件的讀寫許可權?
本來以為就沒有辦法在應用程序這一層改系統時間了,後來在網上搜了好久,知道這個目的還是可以達到的。
第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯:
1. 在應用程序的AndroidManifest.xml中的manifest節點中加入
android:sharedUserId="android.uid.system"這個屬性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。
第二個辦法麻煩點,不過不用開虛擬機跑到源碼環境下用make來編譯:
1. 同上,加入android:sharedUserId="android.uid.system"這個屬性。
2. 使用eclipse編譯出apk文件,但是這個apk文件是不能用的。
3. 用壓縮軟體打開apk文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件。
4. 使用目標系統的platform密鑰來重皮薯埋新給apk文件簽名。這步比較麻煩,
首先找到密鑰文件,在我的Android源碼目錄中的位置
是"build argetproctsecurity",下面的platform.pk8和platform.x509.pem
兩個文件。
然後用Android提供的Signapk工具來簽名,signapk的源代碼是
在"build oolssignapk"下,
用法為"signapk platform.x509.pem platform.pk8 input.apk output.apk",
文件名最好使用絕對路徑防止找不到,也可以修改源代碼直接使用。
這樣最後得到的apk和第一個方法是一樣的。
最後解釋一下原理,首先加入android:sharedUserId="android.uid.system"這個屬性。通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中。那麼把程序的UID配成android.uid.system,也就是要讓程序運行在系統進程中,這樣就手慶有許可權來修改系統時間了。
只是加入UID還不夠,如果這時候安裝APK的話發現無法安裝,提示簽名不符,原因是程序想要運行在系統進程中還要有目標系統的platform
key,就是上面第二個方法提到的platform.pk8和platform.x509.pem兩個文件。用這兩個key簽名後apk才真正可以放入系統進程中。第一個方法中加入LOCAL_CERTIFICATE := platform其實就是用這兩個key來簽名。這也有一個問題,就是這樣生成的程序只有在原始的Android系統或者是自己編譯的系統中才可以用,因為這樣的系統才可以拿到 platform.pk8和platform.x509.pem兩個文件。要是別家公司做的Android上連安裝都安裝不了。試試原始的Android 中的key來簽名,程序在模擬器上運行OK,不過放到G3上安裝直接提示"Package ... has no signatures that match those in shared user android.uid.system",這樣也是保護了系統的安全。
android怎麼在代碼里獲得系統文件的讀寫許可權
Java代碼 1、必須是Android系統開發人員,否則你無法修改init.rc等文件。 2、你的應用程序必須要獲得system許可權。 在應用層 你要想用代碼獲得系統文件許可權,除非你手機root了 要麼你自己坐rom。。。。 自己修改 init,rc
win10怎麼獲得修改系統文件燃螞的許可權
方法/步驟
1
首先找到你要操作的文件夾,這里用一個音效卡相關的文件夾做例子。選中文件夾。右擊它。選擇文件的屬性,安全--->高級。
2
更改所有者,如圖所示。在輸入對象名稱那兒,輸入你的賬戶名稱,我的是微軟賬戶。輸入完之後確定。
3
回到剛才的界面,你會看到所有者已經改變了,變成了你的賬號。然後確定退出,回到文件夾。(一定要確定後退出回到文件中,才能進行下一步)
4
再次回到剛才的界面。禁止所有繼承。
5
添加用戶。輸入賬號,我輸入的是微軟賬號。輸入後確定。
手機獲得root 許可權 怎麼找到系統文件
通過第三方軟體獲得Root許可權,可以訪問和修改手機操作系統里幾乎所有的文件,但這樣操作有可能影響手機的穩定性,出現死機、重啟等人為性故障。
另外獲取許可權後一般對存儲器和CPU等主板上主要部件引起不良。Root屬於修改操作系統軟體,按照條例不屬於包修范圍。為了提升顧客滿意度,對Root顧客提供免費升級固件服務,如果Root已影響到手機硬體需要更換主板,則需要收取主板費用。
若您的機器Root後需將機器恢復到原來的系統版本,請將機器送到服務中心,由售後工程師幫助檢查處理。自行將設備恢復出廠設置是無法取消Root許可權的。
求問如何恢復系統文件的默認許可權?
對於已經獲取所有許可權的文件,建議大家還是恢復到原來的狀態。今天就跟大家分享一下如何恢復系統文件的默認許可權,Windows 7和Windows 8系統都是一樣的操作步驟。這里以平時最常修改的hosts文件為例,下圖顯示已獲取hosts文件所有許可權。已獲得所有許可權的hosts文件恢復許可權有點類似於於逆向操作,首先點選Administrators組(上圖藍色條),然後點擊下方的「高級」按鈕,切換到「所有者」標簽。高級安全設置-所有者在上面的窗口中,點擊「編輯」按鈕打開新窗口來更改所有者。編輯所有者到這一步,你會發現可更改的所有者並沒有當初替換時的TrustedInstaller,怎麼辦?別急,點擊「其他用戶或組」來添加它。在新開的窗口裡,輸入:NT SERVICE\TrustedInstaller,注意前面的NT SERVICE一定要加上,否則系統不認。添加TrustedInstaller用戶完成後點擊確定回到上一窗口,此時會看到TrustedInstaller用戶出現了,接下去就是選擇它,然後一路確定退出各個窗口。文件所有權恢復到默認狀態
如何用代碼讀取查看文件的讀寫許可權???
File類裡面就有canRead,canWrite,canExecute方法啊。 查看原帖>>
麻煩採納,謝謝!
獲得root許可權後怎麼樣刪除系統文件啊?
用re
新手求助,獲得TOOR許可權後,怎麼替換系統文件呀!
先耐心的把這里的帖子看上幾頁,再多網路網路資料,不要手機一上手就玩這些要root許可權的內容,容易出問題,到時候問題越來越多。。。建議至少2周後再做這些事情,對你會很有幫助。 查看原帖>>
iMac win7下怎麼獲得許可權能讀寫Mac的文件
對於一般文件來說,是不需要開啟administrator賬戶的,只需要一個簡單的辦法就OK啦!比如說,對待下面的這種類型的文件夾。
2
我們只需要擊右鍵,選擇「管理員取得所有權」即可。
3
對於一些程序文件來說,只需要你擊右鍵,選擇「以管理員身份運行」,也是一個非常便捷的獲得管理員許可權的辦法。
END
開啟Administrator賬戶的方法
Windows 7系統中,administrator賬戶並不是默認開啟的,那麼就需要我們手動開啟,這也不是很難的啦!對計算機圖標,擊右鍵,選擇管理。
打開界面後,選擇本地用戶和組,單擊用戶,選擇administrator賬戶即可。
3
打開,administrator賬戶之後,按照以下的操作來進行就行了。
4
這樣,在開始登陸的界面,即可以出現administrator賬戶了,選擇此賬戶即可獲得管理員最高許可權,不過建議一般來說此賬戶還是不要開啟的好,如果此賬戶受損,再創建帳戶很容易失敗。還有,在第一次開啟此賬戶時,是不需要密碼的。
android怎麼獲取文件夾許可權代碼
這個問題其實LBE已經解決了。 1.在2012隱私保護版中,每次運行時請求系統root,創建一個開機啟動服務libload.so,專門用於處理lbe自身的root請求。 2.在2013免root版中,首次運行時自動獲取系統root,並把破解過的su文件復制到/system/xbin/.sv ,然後給6755的許可權,專門用於處理lbe自身的root請求。 上述兩種方案,均為程序自帶root管理,用於解決其自身root請求。 以下代碼即為方案2的原理,附件中為修改過的su文件。 ******************************************* 安卓的su文件,基本原理為 1234567if (pid=DB(Allow)) then "get uid=0 root" 白名單,程序獲取rootelseif (pid=DB(Disable)) Return 黑名單,返回空else View"superuser.active" 資料庫無記錄,「授權管理」彈出root請求窗口endif修改後的su文件 1if (pid<>"") then "get uid=0 root" 無條件,返回root********************************************** 我反編譯b.apk,然後把java應用調用runtime.exec("su")的代碼全部改為runtime.exec("sa"), 然後重新打包簽名好。安裝這個軟體。 用RE文件管理器把上面附件的su改名為sa,復制到/system/xbin/sa並改許可權rwsx-rsx-r。 以後使用b.apk,獲取root許可權沒有任何提示。 su.zip大小:249.85K 已經過網路安全檢測,放心下載 點擊下載下載量:133
❹ android開發:手機連接電腦讀取文件
一、打開手機USB調試模式 打開手機系統設置:【菜單(menu)】->【設置】->【應用程序】->【開發】->勾選【USB調試】。 如果你的手機還有一項【未知源】,也一起勾選上:
二、下載驅動
保存到電腦,請記住保存的位置,如:電腦的E盤。下載完成後打開電腦E盤,直接解壓「安卓萬能驅動.rar」到當前文件夾,獲得「安卓萬能驅動」,打開文件夾裡面有一個X64,用於64位操作系統,另一個是X86用於32位的操作系統。 三、用數據線將手機連接到電腦 強烈建議大家使用手機原配的USB數據線!! 由於手機使用的系統(ROM)不一樣,當我們將手機與電腦進行連接時,有部分手機可能會彈出連接模式的選擇提示框,如下圖所示(部分其他機型的圖片借用自網路):
在彈出提示框中選擇【磁碟驅動器】,更改連接模式:
以上是部分機型系統的下拉通知欄,請根據自己使用的系統,從彈出提示框或下拉通知欄中選擇【僅充電】或者【無】這兩種模式都可以。在使用電腦安裝手機軟體的過程中可能需要讀取手機內存卡,所以不建議大家選擇【USB大容量儲存】或者【磁碟驅動器】等模式;如果在完成下面第四步驟後沒有連接成功的,請返回參考第一步「打開USB調試模式」。 四、安裝驅動 如果你的電腦還沒有安裝適合手機的驅動,那麼在連接的時候,電腦彈出更新驅動的提示,全部都選擇取消吧,然後按照下面的步驟手動安裝: 1、滑鼠右鍵點擊【我的電腦】,選擇【管理】,在彈出的【計算機管理】界面左邊目錄下,選擇【設備管理器】:
2、找到其中跟手機相關的有黃色感嘆號或問號圖標的項(如圖所示,這個名字會因手機而異)
3、滑鼠右鍵點擊,彈出菜單,選擇【更新驅動程序】:
4、選擇【瀏覽計算機以查找驅動程序軟體】進行手動安裝:
5、點擊【瀏覽】按鈕,在彈出的窗口找到剛才解壓出來的驅動文件夾,注意:如果你的電腦用的是64位系統,請選擇那個「X64」文件夾,32位的則選擇「X86」:
6、選擇好之後,再點擊【下一步】:
7、當電腦提示windows 安全驗證的時候,請選擇【始終安裝此驅動程序軟體】,XP系統的提示可能略有不同:
8、安裝完成後,在設備管理器就可以看到已經識別的【Android Phone】 -> 【Android ADB Interface】設備:
這樣就大功告成了,手機數據線直接連接電腦,發現移動盤,點進去就是你手機的文件夾了,可以自行操作了!
❺ android 如何讀寫文件
讀文件:
1、通過File獲取文件
2、打開輸入流,讀取文件
寫文件:
1、創建文件
2、打開輸出流,寫入文件內容
示例:
讀文件:
Stringcontent="";//文件內容字元串
//通過路徑/sdcard/foo.txt打開文件
Filefile=newFile("/sdcard/foo.txt");
try{
InputStreaminstream=newFileInputStream(file);//讀取輸入流
InputStreamReaderinputreader=newInputStreamReader(instream);//設置流讀取方式
BufferedReaderbuffreader=newBufferedReader(inputreader);
while((line=buffreader.readLine())!=null){
content+=line+" ";//讀取的文件內容
}
}catch(Exceptionex){
}
寫文件:
Filefile=newFile("/sdcard/foo.txt");//
if(!file.exists())
file.createNewFile();//如果文件不存在,創建foo.txt
try{
OutputStreamoutstream=newFileOutputStream(file);//設置輸出流
OutputStreamWriterout=newOutputStreamWriter(outstream);//設置內容輸出方式
out.write("文字內容");//輸出內容到文件中
out.close();
}catch(java.io.IOExceptione){
e.printStackTrace();
}
❻ Android 內部存儲/外部存儲 及 讀寫許可權
Android 使用 VFS (Virtual File System) 虛擬文件系統。VFS提供了供存儲設備掛載的節點,同一存儲設備經過分區後,不同的分區可以掛載到不同的節點上,如手機的內置存儲卡。
內置存儲卡 / 外置SD卡
內部存儲 / 外部存儲
VFS 的目錄以 / 為根節點,根節點下面又有不同的節點。物理存儲設備就是掛載到這些節點上。
內部存儲卡/外置SD卡 ≠ 內部存儲/外部存儲
首先明確, 內置存儲卡/外置SD卡 是在 物理層面 相對於 手機大眾用戶 來說的。
外置SD卡:可手動插拔的SD卡。
內置存儲卡:焊接在手機內部不可拆卸的存儲卡。
而, 內部存 /外部存儲 是在 文件系統邏輯層面 相對於 開發者 來說的,指具體的路徑。
一般針對某個應用而言的,屬於該應用的存儲路徑叫內部存儲,反之為外部存儲。
路徑: /data/data/package_name
/data/data/ 下都是已安裝應用的目錄,該目錄下包含的文件都是以包名作為文件名的目錄,例如 /data/data/com.sankuai.meituan
獲取內部存儲的方式如下:
其中,參數 mode 指創建模式,一種 4 種
注意: Android 7.0 以上 android.os.Build.VERSION.SDK_INT>=Build.VERSION_CODES.N 使用3/4 常量時,將會導致SecurityException,這意味著 不能通過名稱共享私有文件 。
嘗試共享 file://URI URI將會導致FileUriExposedException,StrictMode API政策禁止在您的應用外部公開file://URL。如果您的應用需要與其他應用共享私有文件,則可以使用 FileProvider 與 FLAG_GRANT_READ_URI_PERMISSION 配合使用。 Android 7.0 行為變更 通過FileProvider在應用間共享文件吧
外部存儲,可以是 外置SD卡 或 內置存儲卡的部分分區。
外部存儲,分為 公共目錄 和 私有目錄
獲取方式
檢查可用性的方法:
Android 4.3 以下,只能通過 Context#getExternalFilesDir(type) 來獲取外部存儲在內置存儲卡分區的私有目錄,無法獲取外置SD卡。
Android 4.3 開始,可以通過 Context#getExternalFilesDirs(type) 獲取一個File數組,包含了內置存儲卡分區和外置SD的私有目錄地址。
可以使用兼容庫的靜態方法 ContextCompate.getExternalFilesDirs() 兼容 4.3。
感謝以下文章作者
解析Android內部存儲、外部存儲的區別