ANDROID基础学习笔记_3.1_文件权限

上一期我们学习了如何生成文件到特定的目录下,既然APP可以生成文件,那么像密码等涉及用户隐私的文件的安全系数就显得尤为重要。今天(貌似我这是一天两篇博文的节奏啊。。。)我们就来了解一下安卓系统下的文件访问权限。

它的权限设定,来自于他的根基——Linux。

验证文件访问权限

1. 为了生成拥有不同访问权限的文件,我们先在.xml文件里建立一个单选组RadioGroup,组里面放四个单选按钮RadioButton分别表示私有、可读、可写、公开四种将要选择生成的权限的文件。

2. 后台通过RadioGroup类里面的getCheckedRadioButtonId()方法来获取选中的是哪种权限文件,然后呢,进行判断,如果是私有的那么就调用Context类里面的openFileOutPut()方法来赋值给文件输出流变量,其中需要一个文件名参数,还需要一个文件访问权限参数:Context.MODE_PRIVATE(私有)、Context.MODE_WORLD_READABLE(可读)、Context.MODE_WORLD_WRITEABLE(可写)、Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE(公开)。部分代码如下:

FileOutputStream fos = null;
			switch (mode) {
			case 1:
				fos = context.openFileOutput("private.txt", Context.MODE_PRIVATE);
				break;
这里的1是当选择私有时传递参数1,后面依次是2/3/4。同时,该目录下还残留着上期留下的生成的默认的文件info.txt。

然后写一个调试程序,就是各种按钮对各种文件进行读和写两种操作。

最后运行调试发现:

程序本身

 可以读写默认文件/私有文件

 可以读不可以写可读文件

 可以写不可以读可写文件

其他程序访问该程序

 不可以读写默认文件/私有文件

 可以读不可以写可读文件

 可以写不可以读可写文件

好,这就是安卓下的文件访问权限。其实看字面意思也能猜个大概差不多。

cmd adb shell命令

在cmd里输入adb shell(前提是连接有安卓虚拟机)

然后输入cd data/data

然后输入ls -l,此时就可以看到data/data目录下所有文件和文件夹的访问权限了。

然后再输入 cd 包名

再输入 cd files 这时候就可以看到我们创建的那几个文件了。

在这些用-/r/w/x/d组成的字符串(一共十个字符)里,第一个用来表示当前是文件(-)还是文件夹(d),后面9个字符分成了三组:第2-4字符表示给程序本身的读(r)写(w)执行(x)权限;第5-7字符表示给用户组的读写执行权限;第8-10字符表示给其他应用程序的权限。如果没有权限就是一个“-”,如果有就显示相应字母。

对于用户组这个概念,我理解的不是很清楚。问度娘,也没找到像样的答案。。。

然后呢,我们还可以通过cmd命令修改文件权限:

在上面的基础上继续输入 chmod 666 info.txt,此时再次输入ls -l我们会发现info.txt文件对所有人都可读写了。chmod是命令,info.txt是指定文件,那想必这个666就是要设定的权限了,那他是怎么来的呢?二进制转换十进制来的。在那10个字符里,如果是“-”就代表0,如果是字符就代表1,要想对所有人开放读写权限该怎么写二进制?必须是0 110 110 110啊,转换十进制不就是666了嘛。。。说实话对二进制这东西我有一种莫名的畏惧感,不会,以后得学学练练。。。

好吧,我又现查现学了一遍十进制二进制相互转换方法

十进制转二进制:

数字除以2取余知道商为0,把余数组合起来颠倒过来就是转换成的二进制。(如:转化6,6/2=3……0;3/2=1……1;1/2=0……1,最后一颠倒余数,不就是110嘛)

二进制转十进制:

从最高位开始,1乘以2的最高位数减一次幂加上1乘以2的次高位数减一次幂加上……直到最后(如:110=1*2^(3-1)+1*2^(2-1)+0*2^(1-1)=6)

今天还学了学怎么配置android的环境变量,跟java操作步骤一样,都是先定义一个环境变量,然后添加到path里面去。

今天学到的还挺杂碎的,不过,知识就是积累的过程,无论学到的多么零碎,最终整合起来的时候我相信会很唬人的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值