Android数据存储实现的5大方式 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

Android数据存储实现的5大方式

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:44

数据存储在开辟中是应用最频繁的,在这里重要介绍Android平台中实现数据存储的5种方法,加倍体系具体的介绍了5种存储的办法和异同。
第一种: 应用SharedPreferences存储数据
SharedPreferences是Android平台上一个轻量级的存储类,主如果保存一些常用的设备比如窗口状况,一般在Activity中 重载窗口状况onSaveInstanceState保存一般应用SharedPreferences完成,它供给了Android平台惯例的Long长 整形、Int整形、String字符串型的保存。
它是什么样的处理方法呢? SharedPreferences类似以前Windows体系上的ini设备文件,然则它分为多种权限,可以全局共享拜访,android123提示最终是以xml方法来保存,整体效力来看不是特其余高,对于惯例的轻量级而言比SQLite要好不少,如不雅真的存储量不大年夜可以推敲本身定义文件格式。xml 处理时Dalvik会经由过程自带底层的本地XML Parser解析,比如XMLpull方法,如许对于内存资本占用比较好。
它的本质是基于XML文件存储key-value键值对数据,平日用来存储一些简单的设备信息。
其存储地位在/data/data/<包名>/shared_prefs目次下。
SharedPreferences对象本身只能获取数据而不支撑存储和修改,存储修改是经由过程Editor对象实现。
实现SharedPreferences存储的步调如下:
一、根据Context获取SharedPreferences对象
二、应用edit()办法获取Editor对象。
三、经由过程Editor对象存储key-value键值对数据。
四、经由过程commit()办法提交数据。
下面是示例代码:
Java代码
  • public class MainActivity extends Activity {      
  • @Override   
  •      public void onCreate(Bundle savedInstanceState) {   
  •         super.onCreate(savedInstanceState);   
  •         setContentView(R.layout.main);   
  •   
  •         //获取SharedPreferences对象   
  •         Context ctx = MainActivity.this;         
  •         SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);   
  •         //存入数据   
  •         Editor editor = sp.edit();   
  •         editor.putString("STRING_KEY", "string");   
  •         editor.putInt("INT_KEY", 0);   
  •         editor.putBoolean("BOOLEAN_KEY", true);   
  •         editor.commit();   
  •   
  •         //返回STRING_KEY的值   
  •         Log.d("SP", sp.getString("STRING_KEY", "none"));   
  •         //如不雅NOT_EXIST不存在,则返回值为"none"   
  •         Log.d("SP", sp.getString("NOT_EXIST", "none"));   
  •      }   
  •   
  • }  

这段代码履行过后,即在/data/data/com.test/shared_prefs目次下生成了一个SP.xml文件,一个应用可以创建多个如许的xml文件。
SharedPreferences对象与SQLite数据库比拟,免除了创建数据库,创建表,写SQL语句等诸多操作,相对而言加倍便利,简洁。然则SharedPreferences也有其自身缺点,比如其本能机能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行前提萌芽等。所以不论SharedPreferences的数据存储操作是若何简单,它也只能是存储方法的一种弥补,而无法完全替代如SQLite数据库如许的其他数据存储方法。
第二种: 内部文件存储数据
关于文件存储,Activity供给了openFileOutput()办法可以用于把数据输出到文件中,具体的实现过程与在J2SE情况中保存数据到文件中是一样的。
文件可用来存放大年夜量数据,如文本、图片、音频等。
默认地位:/data/data/<包>/files/***.***。
代码示例:
Java代码
  • public void save()   
  • {   
  •   
  •        try {   
  •            FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);   
  •            outStream.write(text.getText().toString().getBytes());   
  •            outStream.close();   
  •            Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();   
  •        } catch (FileNotFoundException e) {   
  •            return;   
  •        }   
  •        catch (IOException e){   
  •            return ;   
  •        }   
  •   
  • }  

openFileOutput()办法的第一参数用于指定文件名称,不克不及包含路径分隔符“/” ,如不雅文件不存在,Android 会主动创建它。
创建的文件保存在/data/data/<package name>/files目次,如: /data/data/cn.itcast.action/files/itcast.txt ,经由过程点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目次就可以看到该文件。
openFileOutput()办法的第二参数用于指定操作模式,有四种模式,分别为:
Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私稀有据,只能被应用本身拜访,在该模式下,写入的内容会覆盖原文件的内容,如不雅想把新写入的内容追加到原文件中。可以应用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,不然就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用攫取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
如不雅欲望文件被其他应用读和写,可以传入: openFileOutput(“itcast.txt”, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); android有一套本身的安然模型,当应用法度榜样(.apk)在安装时体系就会分派给他一个userid,当该应用要去拜访其他资本好交手件的时刻,就须要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应当是私有的(位于/data/data/<package name>/files),其他法度榜样无法拜访。
除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有如许其他法度榜样才能精确拜访。
攫取文件示例:
Java代码
  • public void load()   
  • {   
  •     try {   
  •         FileInputStream inStream=this.openFileInput("a.txt");   
  •         ByteArrayOutputStream stream=new ByteArrayOutputStream();   
  •         byte[] buffer=new byte[1024];   
  •         int length=-1;   
  •   
  •     while((length=inStream.read(buffer))!=-1)   {   
  •             stream.write(buffer,0,length);   
  •         }   
  •   
  •         stream.close();   
  •         inStream.close();   
  •         text.setText(stream.toString());   
  •         Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();   
  •     } catch (FileNotFoundException e) {   
  •         e.printStackTrace();   
  •     }   
  •     catch (IOException e){   
  •         return ;   
  •     }   
  •   
  • }  

对于私有文件只能被创建该文件的应用拜访,如不雅欲望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
Activity还供给了getCacheDir()和getFilesDir()办法: getCacheDir()办法用于获取/data/data/<package name>/cache目次 getFilesDir()办法用于获取/data/data/<package name>/files目次。
第三种: 外部文件存储数据

把文件存入SDCard:
应用Activity的openFileOutput()办法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大年夜,存放些小文件还行,如不雅要存放像视泼魅如许的大年夜文件,是弗成行的。对于像视泼魅如许的大年夜文件,我们可以把它存放在SDCard。
SDCard是干什么的?你可以把它看作是移动硬盘或U盘。 在模仿器中应用SDCard,你须要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。
创建SDCard可以在Eclipse创建模仿器时伴随创建,也可以应用DOS敕令进行创建,如下: 在Dos窗口中进入android SDK安装路径的tools目次,输入以下敕令创建一张容量为2G的SDCard,文件后缀可以随便取,建议应用.img: mksdcard 2048M D:\AndroidTool\sdcard.img 在法度榜样中拜访SDCard,你须要申请拜访SDCard的权限。
在AndroidManifest.xml中参加拜访SDCard的权限如下:
Java代码
  • <!-- 在SDCard中创建与删除文件权限 -->   
  •     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>   
  •   
  •     <!-- 往SDCard写入数据权限 -->   
  •     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

要往SDCard存放文件,法度榜样必须先断定手机是否装有SDCard,并且可以进行读写。
留意:拜访SDCard必须在AndroidManifest.xml中参加拜访SDCard的权限。
Java代码
  • if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){   
  •     File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目次            
  •   
  •     File saveFile = new File(sdCardDir, “a.txt”);   
  •         FileOutputStream outStream = new FileOutputStream(saveFile);   
  •         outStream.write("test".getBytes());   
  •         outStream.close();   
  •   
  • }  

Environment.getExternalStorageState()办法用于获取SDCard的状况,如不雅手机装有SDCard,并且可以进行读写,那么办法返回的状况等于Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()办法用于获取SDCard的目次,当然要获取SDCard的目次,你也可以如许写:
Java代码
  • File sdCardDir = new File("/sdcard"); //获取SDCard目次   
  •   
  •     File saveFile = new File(sdCardDir, "itcast.txt");   
  •   
  •     //膳绫擎两句代码可以合成一句:   
  •   
  •     File saveFile = new File("/sdcard/a.txt");   
  •   
  •     FileOutputStream outStream = new FileOutputStream(saveFile);   
  •   
  •     outStream.write("test".getBytes());   
  •   
  •     outStream.close();  

第四种: SQLite数据库存储数据
SQLite是轻量级嵌入式数据库引擎,它支撑 SQL 说话,并且只应用很少的内存就有很好的机能。此外它照样开源的,任何人都可以应用它。很多开源项目((Mozilla, PHP, Python)都应用了 SQLite.SQLite 由以下几个组件构成:SQL 编译器、内核、后端以及附件。SQLite 经由过程应用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩大 SQLite 的内核变得加倍便利。
特点:
面向资本竽暌剐限的设备,
没有办事器过程,
所稀有据存放在同一文件中跨平台,
可自由复制。
SQLite 内部构造:

[img]http://dl2.iteye.com/upload/attachment/0104/3780/9215176d-cf77-33f6-9b1c-885ea36d90f1.jpg

SQLite 根本上相符 SQL-92 标准,和其他的重要 SQL 数据库没什么差别。它的长处就是高效,Android 运行时情况包含了完全的 SQLite。
SQLite 和其他数据库最大年夜的不合就是对数据类型的支撑,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,然则你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如不雅该类型与接洽关系的列不匹配,则 SQLite 会测验测验将该值转换成该列的类型。如不雅不克不及转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。 此外,SQLite 不支撑一些标准的 SQL 功能,特别是外键束缚(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一个完全的 SQL 体系,拥有完全的触发器,交易等等。
Android 集成了 SQLite 数据库 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用法度榜样都可以应用 SQLite 数据库。
对于熟悉 SQL 的开辟人员来时,在 Android 开辟中应用 SQLite 相当简单。然则,因为 JDBC 会消费太多的体系资本,所以 JDBC 对于手机这种内存受限设备来说并不合适。是以,Android 供给了一些新的 API 来应用 SQLite 数据库,Android 开辟中,法度榜样员须要学应用这些 API。
数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开辟中应用 SQLite 数据库 Activites 可以经由过程 Content Provider 或者 Service 拜访一个数据库。
下面会具体讲解如不雅创建数据库,添加数据和萌芽数据库。 创建数据库 Android 不主动供给数据库。在 Android 应用法度榜样中应用 SQLite,必须本身创建数据库,然后创建表、索引,填充数据。
Android 供给了 SQLiteOpenHelper 赞助你创建一个数据库,你只要持续 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开辟应用法度榜样的须要,封装了创建和更新数据库应用的逻辑。
SQLiteOpenHelper 的子类,至少须要实现三个办法:
1 构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个办法须要四个参数:高低文情况(例如,一个 Activity),数据库名字,一个可选的游标工厂(平日是 Null),一个代表你正在应用的数据库模型版本的┞符数。
2 onCreate()办法,它须要一个 SQLiteDatabase 对象作为参数,根据须要对这个对象填充表和初始化数据。
3 onUpgrage() 办法,它须要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,如许你就可以清跋假使何把一个数据库大年夜旧的模型改变到新的模型。
下面示例代码展示了若何持续 SQLiteOpenHelper 创建数据库:
Java代码
  • public class DatabaseHelper extends SQLiteOpenHelper {      
  •   DatabaseHelper(Context context, String name, CursorFactory cursorFactory, int version)   
  •   {        
  •     super(context, name, cursorFactory, version);        
  •      }        
  •   
  •      @Override      
  •      public void onCreate(SQLiteDatabase db) {        
  •          // TODO 创建数据库后,对数据库的操作        
  •      }        
  •   
  •      @Override      
  • public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        
  •          // TODO 更改数据库版本的操作        
  •      }        
  •   
  • @Override      
  • public void onOpen(SQLiteDatabase db) {        
  •          super.onOpen(db);         
  •          // TODO 每次成功打开数据库后起首被履行        
  •      }        
  • }  

接下来评论辩论具体若何创建表、插入数据、删除表等等。调用 getReadableDatabase() 或 getWriteableDatabase() 办法,你可以获得 SQLiteDatabase 实例,具体调用那个办法,取决于你是否须要改变数据库的内容:
Java代码
  • db=(new DatabaseHelper(getContext())).getWritableDatabase();   
  •        return (db == null) ? false : true;  

膳绫擎这段代码会返回一个 SQLiteDatabase 类的实例,应用这个对象,你就可以萌芽或者修改数据库。 当你完成了对数据库的操作(例如你的 Activity 已经封闭),须要调用 SQLiteDatabase 的 Close() 办法来释放掉落数据库连接。 创建表和索引 为了创建表和索引,须要调用 SQLiteDatabase 的 execSQL() 办法来履行 DDL 语句。如不雅没有异常,这个办法没有返回值。
例如,你可以履行如下代码:
db.execSQL(“CREATE TABLE mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, value REAL);”);
这条语句会创建一个名为 mytable 的表,表有一个列名为 _id,并且是主键,这列的值是会主动增长的┞符数(例如,当你插入一行时,SQLite 会给这列主动赋值),别的还有两列:title( 字符 ) 和 value( 浮点数 )。 SQLite 会主动为主键列创建索引。 平日情况下,第一次创建数据库时创建了表和索引。
如不雅你不须要改变表的 schema,不须要删除表和索引 . 删除表和索引,须要应用 execSQL() 办法调用 DROP INDEX 和 DROP TABLE 语句。 给表添加数据 膳绫擎的代码,已经创建了数据库和表,如今须要给表添加数据。有两种办法可以给表添加数据。
像膳绫擎创建表一样,你可以应用 execSQL() 办法履行 INSERT, UPDATE, DELETE 等语句来更新表的数据。execSQL() 办法实用于所有不返回结不雅的 SQL 语句。
例如: db.execSQL(“INSERT INTO widgets (name, inventory)”+ “VALUES (‘Sprocket’, 5)”);
另一种办法是应用 SQLiteDatabase 对象的 insert(), update(), delete() 办法。这些办法把 SQL 语句的一部分作为参数。
示例如下:
Java代码
  • ContentValues cv=new ContentValues();   
  •   
  •     cv.put(Constants.TITLE, "example title");   
  •   
  •     cv.put(Constants.VALUE, SensorManager.GRAVITY_DEATH_STAR_I);   
  •   
  •     db.insert("mytable", getNullColumnHack(), cv);  

update()办法有四个参数,分别是表名,表示列名和值的 ContentValues 对象,可选的 WHERE 前提和可选的填充 WHERE 语句的字符串,这些字符串会调换 WHERE 前提中的“?”标记。
update() 根据前提,更新指定列的值,所以用 execSQL() 办法可以达到同样的目标。 WHERE 前提和其参数和用过的其他 SQL APIs 类似。
例如:
String[] parms=new String[] {“this is a string”};
db.update(“widgets”, WordStrments, “name=?”, parms);
delete() 办法的应用和 update() 类似,应用表名,可选的 WHERE 前提和响应的填充 WHERE 前提的字符串。 萌芽数据库 类似 INSERT, UPDATE, DELETE,有两种办法应用 SELECT 大年夜 SQLite 数据库检索数据。
1 .应用 rawQuery() 直接调用 SELECT 语句; 应用 query() 办法构建一个萌芽。
Raw Queries 正如 API 名字,rawQuery() 是最简单的解决办法。经由过程这个办法你就可声调用 SQL SELECT 语句。
例如: Cursor c=db.rawQuery( “SELECT name FROM sqlite_master WHERE type=’table’ AND name=’mytable’”, null);
在膳绫擎例子中,我们萌芽 SQLite 体系表(sqlite_master)检查 table 表是否存在。返回值是一个 cursor 对象,这个对象的办法可以迭代萌芽结不雅。 如不雅萌芽是动态的,应用这个办法就会异常复杂。
例如,当你须要萌芽的列在法度榜样编译的时刻不克不及肯定,这时刻应用 query() 办法会便利很多。
Regular Queries query() 办法用 SELECT 语句段构建萌芽。SELECT 语句内容作为 query() 办法的参数,比如:要萌芽的表名,要获取的字段名,WHERE 前提,包含可选的地位参数,去替代 WHERE 前提中地位参数的值,GROUP BY 前提,HAVING 前提。 除了表名,其他参数可所以 null。所以,以前的代码段可以可写成:
String[] columns={“ID”, ”inventory”};
Java代码
  • String[] parms={"snicklefritz"};   
  • Cursor result=db.query("widgets", columns, "name=?",parms, null, null, null);  

应用游标
不管你若何履行萌芽,都邑返回一个 Cursor,这是 Android 的 SQLite 数据库游标,
应用游标,你可以:
经由过程应用 getCount() 办法获得结不雅集中有若干记录;
经由过程 moveToFirst(), moveToNext(), 和 isAfterLast() 办法遍历所有记录;
经由过程 getColumnNames() 获得字段名;
经由过程 getColumnIndex() 转换成字段号;
经由过程 getString(),getInt() 等办法获得给定字段当前记录的值;
经由过程 requery() 办法从新履行萌芽获得游标;
经由过程 close() 办法释放游标资本;
例如,下面代码遍历 mytable 表:
Java代码
  • Cursor result=db.rawQuery("SELECT ID, name, inventory FROM mytable");        
  • result.moveToFirst();   
  •     while (!result.isAfterLast()) {   
  •         int id=result.getInt(0);   
  •         String name=result.getString(1);   
  •         int inventory=result.getInt(2);   
  •         // do something useful with these   
  •         result.moveToNext();   
  •       }   
  •   
  • result.close();  

在 Android 中应用 SQLite 数据库治理对象 在其他数据库上作开辟,一般都应用对象来检查和处理数据库的内容,而不是仅仅应用数据库的 API。
应用 Android 模仿器,有两种可供选择的办法来治理数据库。
起首,模仿器绑定了 sqlite3 控制台法度榜样,可以应用 adb shell 敕令来调用他。只要你进入了模仿器的 shell,在数据库的路径履行 sqlite3 敕令就可以了。
数据库文件一般存放在: /data/data/your.app.package/databases/your-db-name 如不雅你爱好应用更友爱的对象,你可以把数据库拷贝到你的开辟机上,应用 SQLite-aware 客户妒攀来操作它。如许的话,你在一个数据库的拷贝上操作,如不雅你想要你的修改能反竽暌钩到设备上,你须要把数据库备份归去。
把数据库大年夜设备上考出来,你可以应用 adb pull 敕令(或者在 IDE 上做响应操作)。
存储一个修悛改的数据库到设备上,应用 adb push 敕令。 一个最便利的 SQLite 客户端是 FireFox SQLite Manager 扩大,它可以跨所有平台应用。
下图是SQLite Manager对象:

[img]http://dl2.iteye.com/upload/attachment/0104/3785/e6fabbe0-0372-34ff-b96b-8ddbfc322f89.jpg

如不雅你想要开辟 Android 应用法度榜样,必定须要在 Android 上存储数据,应用 SQLite 数据库是一种异常好的选择。
第五种: 收集存储数据
前面介绍的几种存储都是将数据存储在本地设备上,除此之外,还有一种存储(获取)数据的方法,经由过程收集来实现数据的存储和获取。
我们可声调用WebService返回的数据或是解析HTTP协定实现收集数据交互。
具体须要熟悉java.net.*,Android.net.*这两个包的内容,在这就不赘述了,请大年夜家参阅相干文档。
下面是一个经由过程地区名称萌芽该地区的气象预告,以POST发送的方法发送请求到webservicex.net站点,拜访WebService.webservicex.net站点上供给萌芽气象预告的办事。
代码如下:
Java代码
  • package com.android.weather;   
  •   
  • import java.util.ArrayList;   
  • import java.util.List;   
  •   
  • import org.apache.http.HttpResponse;   
  • import org.apache.http.NameValuePair;   
  • import org.apache.http.client.entity.UrlEncodedFormEntity;   
  • import org.apache.http.client.methods.HttpPost;   
  • import org.apache.http.impl.client.DefaultHttpClient;   
  • import org.apache.http.message.BasicNameValuePair;   
  • import org.apache.http.protocol.HTTP;   
  • import org.apache.http.util.EntityUtils;   
  •   
  • import android.app.Activity;   
  • import android.os.Bundle;   
  •   
  • public class MyAndroidWeatherActivity extends Activity {   
  •     //定义须要获取的内容来源地址   
  •     private static final String SERVER_URL =   
  •         "http://www.webservicex.net/WeatherForecast.asmx/GetWeatherByPlaceName";   
  •   
  •     /** Called when the activity is first created. */   
  •     @Override   
  •     public void onCreate(Bundle savedInstanceState) {   
  •         super.onCreate(savedInstanceState);   
  •         setContentView(R.layout.main);   
  •   
  •         HttpPost request = new HttpPost(SERVER_URL); //根据内容来源地址创建一个Http请求   
  •         // 添加一个变量   
  •         List<NameValuePair> params = new ArrayList<NameValuePair>();   
  •         // 设置一个地区名称   
  •         params.add(new BasicNameValuePair("PlaceName", "NewYork"));  //添加必须的参数   
  •   
  •         try {   
  •             //设置参数的编码   
  •             request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));   
  •             //发送请求并获取反馈   
  •             HttpResponse httpResponse = new DefaultHttpClient().execute(request);   
  •   
  •             // 解析返回的内容   
  •             if(httpResponse.getStatusLine().getStatusCode() != 404){   
  •                String result = EntityUtils.toString(httpResponse.getEntity());   
  •                System.out.println(result);   
  •             }   
  •         } catch (Exception e) {   
  •             e.printStackTrace();   
  •        }   
  •     }  

别忘记了在设备文件中设置拜访收集权限:
Java代码
  • <uses-permission android:name="android.permission.INTERNET" />

相关案例查看更多