最近在做Android項目,發現之前能對sdcard卡進行讀寫操作突然不能了,細找之下,發現如下修改權限途徑:
設置DDMS(File Explorer)目錄下的sdcard目錄的權限
1、打開cmd命令
2、輸入adb shell(成功后進入adb的root用戶狀態#)
3、你可以用 ls 命令看下當前文件夾下目錄,你會發現sdcard目錄在這下面
4、修改sdcard權限,因為此時sdcard是only-read的狀態,
5、修改目錄命令:chmod 075 (不要直接用777,不能成功執行的)
6、sdcard目錄的讀寫權限修改完成。可在其中導入文件。
其它命令:
adb shell mount -o remount rw /
注意,/表示的是根目錄,因此這個不僅僅是對sdcard,其他文件也可以讀寫。rw表示讀寫權限,mount重掛載文件系統
如圖:
最近在做Android項目,發現之前能對sdcard卡進行讀寫操作突然不能了,細找之下,發現如下修改權限途徑:
設置DDMS(File Explorer)目錄下的sdcard目錄的權限
1、打開cmd命令
2、輸入adb shell(成功后進入adb的root用戶狀態#)
3、你可以用 ls 命令看下當前文件夾下目錄,你會發現sdcard目錄在這下面
4、修改sdcard權限,因為此時sdcard是only-read的狀態,
5、修改目錄命令:chmod 075 (不要直接用777,不能成功執行的)
6、sdcard目錄的讀寫權限修改完成。可在其中導入文件。
其它命令:
adb shell mount -o remount rw /
注意,/表示的是根目錄,因此這個不僅僅是對sdcard,其他文件也可以讀寫。rw表示讀寫權限,mount重掛載文件系統
如圖:
程序中訪問SDCard,需要申請訪問SDCard權限,在AndroidManifest.xml加入訪問SDCard權限
如下:
<!-- 在SDCard中創建與刪除文件權限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard寫入數據權限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
得到當前SDCARD的位置
Environment.getExternalStorageDirectory()
這個是外部存儲路徑,比使用絕對路徑好 。
在android模擬器中刪除系統應用程序
首先啟動android模擬器。 打開cmd命令行窗口。輸入 adb -s emulator-5554 shell
此時可以管理系統文件夾了,再輸入 ls
可以看到列出了文件夾和文件,輸入 cd system/app 再輸入 ls
可以看到系統自帶的應用程序apk文件,刪除你想要刪除的,例如Phone.apk,輸入 rm Phone.apk
此時會看到提示說 rm failed for Phone.apk, Read-only file system 那是因為這些是只讀文件,我們沒有權限刪除它。 所以接下來要做的是獲取權限,首先查看權限,輸入 mount
可以看到 /dev/block/mtdblock0 /system yaffs2 ro 0 0 說明在system這個地方我們沒有權限 那么接下來我們就來獲取權限,輸入 mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
沒有提示錯誤,再次查看權限,輸入 mount
可以看到 /dev/block/mtdblock0 /system yaffs2 rw 0 0 說明我們已經獲取到權限了 此時再輸入 rm Phone.apk 就可以成功刪除了
最后一點,就算你成功刪除了,android模擬器每次啟動時也會恢復回來。
那么如何永久刪除呢,很簡單,刪除SdkSetup.apk,輸入 rm SdkSetup.apk
還沒完,找到avd目錄(一般在我的文檔),進入xxxx.avd目錄,刪除cache.img和userdata-qemu.img
還有還有,找到%SDK_HOME%/platforms/android-X/images/system.img,復制到上面的目錄中。
最后最后,再重啟模擬器,大功告成!
