您的位置:首页 > 其它

SDCard权限设置

2012-06-11 15:19 323 查看
最近在做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,复制到上面的目录中。

最后最后,再重启模拟器,大功告成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: