最近在做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,复制到上面的目录中。
最后最后,再重启模拟器,大功告成!