zoukankan      html  css  js  c++  java
  • Andriod基础2

    目录:

            1.junit单元测试

            2.保存数据到rom中

            3.andriod下的文件访问权限

            4.数据保存到SDcard

            5.sharedPreference保存数据

            6.Pull解析xml

            7.SQLite数据库

     一.Junit单元测试

        在实际开发中需要不断地进行程序代码的测试,在andriod中可以使用Junit测试框架进行代码的测试。

        使用步骤:

        第一步:在AndriodMainfest.xml中加入下面的红色代码

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.lewu.action" android:versionCode="1“  android:versionName="1.0">
     <application android:icon="@drawable/icon" android:label="@string/app_name">
            <uses-library android:name="android.test.runner" />
            ....
     </application>
     <uses-sdk android:minSdkVersion="8" />
     <instrumentation android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="cn.itcast.action" android:label="Tests for My App" />

    </manifest>

       在使用eclipse创建andriod工程的时候可以勾选Create a Test Project.在生成的测试工程的AndriodMainfest.xml中会自动添加

      

      第二步:编写单元测试代码:(继承AndriodTestcase)

        

    1 import android.test.AndroidTestCase;
    2 import android.util.Log;
    3 public class XMLTest extends AndroidTestCase {
    4      public void testSomething() throws Throwable {
    5         Assert.assertTrue(1 + 1 == 3);
    6      }
    7 } 

      选中方法名--->右击"Run As--Android Junit Test"即可进行方法的测试

      二.保存数据到rom中

      Activity提供了OpenFileOutput()将数据输出到文件中

     1 package com.lewu.utils;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.FileOutputStream;
     5 import java.util.HashMap;
     6 import java.util.Map;
     7 
     8 import android.content.Context;
     9 
    10 public class FileService {
    11     private Context context;
    12 
    13     public FileService(Context context) {
    14         this.context = context;
    15 
    16     }
    17 
    18     /**
    19      * 
    20      * @param name
    21      *            用户名
    22      * @param password
    23      *            密码
    24      * @param filename
    25      *            文件名
    26      * @return
    27      * @throws Exception
    28      */
    29 
    30     public boolean saveToFile(String name, String password, String filename)
    31             throws Exception {
    32         FileOutputStream out = context.openFileOutput(filename,
    33                 Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
    34         String result = name + ":" + password;
    35         out.write(result.getBytes());
    36         out.close();
    37         out.flush();
    38         return true;
    39     }
    40 
    41     /**
    42      * 
    43      * @param fileName
    44      *        读入的文件名
    45      * @return
    46      */
    47     public Map<String, String> getInfo(String fileName)throws Exception {
    48         Map<String ,String> map = new HashMap<String, String>();
    49         FileInputStream input = context.openFileInput(fileName);
    50         byte[] result = StreamTools.getBytes(input);
    51         String info = new String(result);
    52         String str[] = info.split(":");
    53         map.put("username", str[0]);
    54         map.put("password", str[1]);
    55         return map;
    56     }
    57 }

      StringTools工具类:

     1 package com.lewu.utils;
     2 
     3 import java.io.ByteArrayOutputStream;
     4 import java.io.InputStream;
     5 
     6 public class StreamTools {
     7     
     8     /**
     9      * 读入数据到byte数组中
    10      * @param in
    11      * @return
    12      */
    13     public static byte[] getBytes(InputStream in)throws Exception {
    14         ByteArrayOutputStream out = new ByteArrayOutputStream();
    15         byte[] buffer = new byte[1024];
    16         int len = 0;
    17         while((len = in.read(buffer))!=-1){
    18             out.write(buffer,0,len);
    19         }
    20         in.close();
    21         out.flush();
    22 
    23         return out.toByteArray();
    24     }
    25 
    26 }

      三.andriod下的文件访问权限:

        Context.MODE_PRIVATE:为默认的操作模式,代表文件是私有的数据,只能被应用本身访问。在该模式下,写入的内容会覆盖源文件的内容。

        Context.MODE_APPEND:把写入的内容追加到源文件中

        Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取

        Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入

        如果希望文件被其他应用读和写,可以传入:   

        openFileOutput("lewu.txt", Context.MODE_WORLD_READABLE +                                                                               Context.MODE_WORLD_WRITEABLE);

     

     四:保存数据到SDCard:

       申请在sd卡中删除和创建的权限:

     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    

       申请sd卡的写入数据的权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    

       向sd卡中写入文件:

       在向sd卡中写入文件的时候需要先判断sd卡是否存在:if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED));

      

    1     public boolean saveToSdcard() throws Exception {
    2         //获取sd卡根目录
    3         File SDCardDir = Environment.getExternalStorageDirectory();
    4         File file = new File(SDCardDir, "lewu.txt");
    5         FileOutputStream out = new FileOutputStream(file);
    6         out.write("tangjie".getBytes());
    7         out.close();
    8         return true;
    9     }

      五、使用sharedPreference保存数据

      六、Pull解析xml(XmlPullParse)

        第一步:创建Xml文件

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <Persons>
    3     <person age="20">
    4         <name>汤杰</name>
    5     </person>
    6      <person age="23">
    7         <name>王振</name>
    8     </person>
    9 </Persons>

        第二步:获取XmlPullParse对象

    1 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    2 XmlPullParser parse = factory.newPullParser();
    3 InputStream input = ma.open("Person.xml");

       第三步:对文档进行解析

     1 public static List<Person> xmlParse(InputStream in, XmlPullParser parse)
     2             throws Exception {
     3 
     4         parse.setInput(in, "utf-8");
     5         int eventType = parse.getEventType();
     6         List<Person> persons = null;
     7         Person person = null;
     8         while (eventType != XmlPullParser.END_DOCUMENT) {
     9             switch (eventType) {
    10             case XmlPullParser.START_TAG:
    11                 if (parse.getName().equals("Persons")) {
    12                     persons = new ArrayList<Person>();
    13                 } else if ("person".equals(parse.getName())) {
    14                     person = new Person();
    15                     String age = parse.getAttributeValue(0);
    16                     person.setAge(age);
    17                 } else if ("name".equals(parse.getName())) {
    18                     String name = parse.nextText();
    19                     person.setName(name);
    20                 }
    21 
    22                 break;
    23             case XmlPullParser.END_TAG:
    24                 if ("person".equals(parse.getName())) {
    25                     persons.add(person);
    26                     person = null;
    27                 }
    28                 break;
    29 
    30             }
    31             eventType = parse.next();
    32         }
    33         System.out.println(persons.size());
    34         return persons;
    35     }

        七、SQlite数据库

         1、创建数据库,借助SQLiteOpenHelper类完成

     1 package com.soyong.db;
     2 
     3 import android.content.Context;
     4 import android.database.sqlite.SQLiteDatabase;
     5 import android.database.sqlite.SQLiteOpenHelper;
     6 
     7 public class SqlHelper extends SQLiteOpenHelper {
     8     private static final String name = "lewu.db";
     9     private static final int version = 1;
    10 
    11     public SqlHelper(Context context) {
    12         super(context, name, null, version);
    13     }
    14 
    15     @Override
    16     public void onCreate(SQLiteDatabase db) {
    17         System.out.println("创建数据库成功");
    18         db.execSQL("CREATE TABLE IF NOT EXISTS person (personid integer primary key autoincrement, name varchar(20), age integer)");  
    19     }
    20 
    21     @Override
    22     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    23         db.execSQL(" ALTER TABLE person ADD phone VARCHAR(12) NULL ");
    24     }
    25 }

        在调用SQLiteOpenHelper中的getWritableDatabase()或者getReadableDatabase()的时候,如果数据库不存在,就创建相应的数据库。在调用其中的onCreate方法。onCreate仅执行一次,一般用于创建表结构。onCreate方法用于更新操作,在每次数据库版本被修改的时候会执行

       2、编写数据库操作类进行数据库的增删改查

     1 package com.soyong.db;
     2 
     3 import android.content.Context;
     4 import android.database.Cursor;
     5 import android.database.sqlite.SQLiteDatabase;
     6 
     7 public class DbHandle {
     8     private SqlHelper helper = null;
     9 
    10     public DbHandle() {
    11     }
    12 
    13     public DbHandle(Context context) {
    14         this.helper = new SqlHelper(context);
    15     }
    16 
    17     public boolean find(String name) {
    18         boolean result = false;
    19         // 获取SQLLiteDatabases数据库的方法
    20         SQLiteDatabase db = helper.getReadableDatabase();
    21         if (db.isOpen()) {
    22             Cursor curosr = db.rawQuery("select * from person where name=?",
    23                     new String[] { name }); // 获取结果集的游标
    24             if (curosr.moveToFirst()) {
    25                 result = true;
    26             }
    27             curosr.close(); // 释放掉结果集的游标
    28             db.close();
    29         }
    30         return result;
    31     }
    32 
    33     public void add(int personid, String name, int age) {
    34         SQLiteDatabase db = helper.getReadableDatabase();
    35         if (db.isOpen()) {
    36             db.execSQL("insert into person (personid,name,age) values (?,?,?)",
    37                     new Object[] { personid, name, age });
    38             db.close();
    39         }
    40     }
    41 
    42     public void update(int personid, int age) {
    43         SQLiteDatabase db = helper.getReadableDatabase();
    44         if (db.isOpen()) {
    45             db.execSQL("update person set age=? where personid=?",
    46                     new Object[] { age, personid });
    47             db.close();
    48         }
    49     }
    50     
    51     public void delete(String name){
    52         SQLiteDatabase db = helper.getReadableDatabase();
    53         if (db.isOpen()) {
    54             db.execSQL("delete from person where name=?", new Object[]{name});
    55             db.close();
    56         }
    57 
    58     }
    59 }
  • 相关阅读:
    解决Mysql(MyISAM)的读写互斥锁的问题
    XtraDB存储引擎
    VMware虚拟机linux系统时间同步的解决办法centos rhel
    SQL Server数据库查询速度慢的原因和解决方法
    mysql database manual[mysql数据库手册]
    android 相机使用详解概述
    android中进行https连接的方式的详解
    android 获取手机中所有的传感器Sensor类使用方法
    获取手机安装的全部应用的示例教程
    android 全局异常的处理 详解
  • 原文地址:https://www.cnblogs.com/tagie/p/3059390.html
Copyright © 2011-2022 走看看