Android基础第二天

来源:互联网 发布:什么是node.js 编辑:程序博客网 时间:2024/05/21 08:55

 

1. android下权限

         网络访问

         写SD卡

         读SD卡

        

2. 保存数据到手机内存

1)文件存储到/data/data/com.example.qq/files下:

                   this.getFilesDir().getPath()  返回一个文件夹 -- /data/data/包名/files

        

2)将文件存到/data/data/com.example.qq/cache下

                   使用this.getCacheDir().getPath()

 

3. 保存数据到SDCard

         用API获取SDCard的路径(不同手机SDCard文件夹位置不同)

         Environment.getExternalStorageDirectory()

        

         判断当前手机是否有SD卡

         Environment.getExternalStorageState() 

         --Environment.MEDIA_MOUNTED  --Environment.MEDIA_REMOVED

        

         获得手机内存及SD卡的内存状态

        

4. 权限

         openFileOutput("aa.txt",mode) --/data/data/包名/files/aa.txt

         mode -- 文件权限

         Context.MODE_PRIVATE                  

         Context.MODE_WORLD_READABLE

         Context.MODE_WORLD_WRITABLE

         Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITABLE

        

         FileExploer中 Permission下  _  _ _ _  _ _ _  _ _ _

        

         第1位:代表文件的类型(d代表文件夹, -代表文件,l代表挂载某一个文件)

         第2~4位:rw- 代表的是当前用户的权限 110 = 6 

                             rwx x代表可执行

         第5~7位:当前用户所在组的其他组员的权限

         第8~10位:其他所有人的权限 ---没有任何权限  r--可读  -w-可写  rw-可读可写

         可以通过linux shell改变权限

        

         Android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给它一个userid

         当该应用要去访问其他资源比如文件的时候,就需要userid匹配。

         默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的

         位于/data/data/<package name>/files,其他程序是无法访问的

         除非在创建的时候制定了Context.MODE_WORLD_READABLE等属性

 

5. SharedPreference存储路径

           -- /data/data/<package name>/Shared_prefs

         对于软件配置参数的保存

         如果是window软件通常我们会采用ini文件进行保存,

         如果是j2se应用,我们会采用properties属性文件或者xml进行保存。

         如果是Android应用,提供了一个SharedPreferences类,特别适合用于保存软件配置参数。

 

6. XML解析的方法

         1)DOM解析             DOM解析占内存,文件一下子读入内存,再一点一点解析

         2)SAX解析              SAX解析是一点一点解析,但是不能停,要解析完成

         3)PULL解析            PULL解析是一点一点解析,可以停止

        

7. XML的序列化和解析(PULL方法)

         1)XML的序列化

XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(fos,"utf-8");serializer.startDocument("utf-8", true); // 写开始serializer.startTag(null, "persons");for (Person person : personList) {serializer.startTag(null, "person");serializer.attribute(null, "id",Integer.toString(person.getId()));serializer.startTag(null, "name");serializer.text(person.getName());serializer.endTag(null, "name");serializer.startTag(null, "age");serializer.text(String.valueOf(person.getAge()));serializer.endTag(null, "age");serializer.endTag(null, "person");}serializer.endTag(null, "persons");serializer.endDocument(); // 写结束

         2)XML的Pull解析方法

XmlPullParser parser = Xml.newPullParser();parser.setInput(fis, "utf-8");int eventType = parser.getEventType();List<Person> personList = null;Person person = null;while (eventType != XmlPullParser.END_DOCUMENT) {String tagName = parser.getName();switch (eventType) {case XmlPullParser.START_TAG:if ("persons".equals(tagName)) {personList = new ArrayList<>();} else if ("person".equals(tagName)) {person = new Person();String id = parser.getAttributeValue(null, "id");// String --> intperson.setId(Integer.parseInt(id));} else if ("name".equals(tagName)) {person.setName(parser.nextText());} else if ("age".equals(tagName)) {person.setAge(Integer.parseInt(parser.nextText()));}break;case XmlPullParser.END_TAG:if ("person".equals(tagName)) {personList.add(person);}break;default:break;}// 获得下一个事件类型eventType = parser.next();}return personList;


 

8. Android中想让一个元素滚动

只需要将<ScrollView>元素</ScrollView>


 

0 0