Android 实现联网(一)——package说明

来源:互联网 发布:java swing弹出输入框 编辑:程序博客网 时间:2024/06/05 16:49
 

今天我们将深入介绍了Android SDK 中一些与网络有关的package,如下:

描述

Java.NET提供与联网有关的类,包括流和数据包(datagram)sockets、Internet 协议和常见 HTTP 处理。该包是一个多功能网络资源。有经验的 Java 开发人员可以立即使用这个熟悉的包创建应用程序。java.io虽然没有提供显式的联网功能,但是仍然非常重要。该包中的类由其他 Java 包中提供的 socket 和连接使用。它们还用于与本地文件(在与网络进行交互时会经常出现)的交互。java.nio包含表示特定数据类型的缓冲区的类。适合用于两个基于 Java 语言的端点之间的通信。org.apache.*表示许多为 HTTP 通信提供精确控制和功能的包。可以将 Apache 视为流行的开源web 服务器。android.net除核心 java.net.* 类以外,包含额外的网络访问 socket。该包包括 URI 类,后者频繁用于 Android 应用程序开发,而不仅仅是传统的联网方面android.net.http包含处理 SSL 证书的类。android.net.WIFI包含在 Android 平台上管理有关 WiFi(802.11 无线 Ethernet)所有方面的类。并不是所有设备都配备了 WiFi 功能,特别是 Android 在Motorola 和 LG 等手机制造商的 “翻盖手机” 领域获得了成功。android.telephony.GSM包含用于管理和发送 SMS(文本)消息的类。一段时间后,可能会引入额外的包来来为非 GSM 网络提供类似的功能,比如CDMA 或 android.telephony.cdma 等网络。

上表并没有列出所有包,但是可以让我们清楚地意识到Android的强大功能。

介绍一个简单的网络示例

在EditView中输入URL后,单击“go!”按钮,界面显示如下
 
界面部分的代码简要明了,就不此额外说明了,下面详细解析核心代码,如下:

Java代码 
  1. final Button button = (Button) findViewById(R.id.ButtonGo);  
  2. button.setOnClickListener(new Button.OnClickListener() {  
  3. public void onClick(View v) {  
  4. try{  
  5. tView.setText(”");  
  6. // 获取输入的URL地址  
  7. URL url = new URL(eText.getText().toString());  
  8. URLConnection conn = url.openConnection();  
  9. //获取网页数据流  
  10. BufferedReader rd =  
  11. new BufferedReader(new InputStreamReader(conn.getInputStream()));  
  12. String line = “”;  
  13. //读取数据  
  14. while ((line = rd.readLine()) != null) {  
  15. Message lmsg;  
  16. lmsg = new Message();  
  17. lmsg.obj = line;  
  18. lmsg.what = 0;  
  19. //将数据显示在界面上  
  20. h.sendMessage(lmsg);  
  21. }  
  22. }  
  23. catch (Exception e)  
  24. {  
  25. //输出异常信息  
  26. Log.v(”Browse”, e.toString());  
  27. }  
  28. }  
  29. });  
 

 

简要解析如下:URL 和 URLConnection 类共同提供与用户所选的 Web 站点的连接。BufferedReader 的一个实例负责从 Web 站点连接中读取传入的数据。每读取一行代码,文本就被附加到一个 TextView。数据并没有直接指定给 TextView,而是引入了一种设计模式,即创建一个消息对象并将该对象发送到一个处理程序的实例。这是更新UI 的一种比较可取的方法,对可能需要同时运行多个线程的应用程序而言尤其如此。 A Handler allows you to send and process Message and Runnable objects associated with a thread’s MessageQueue,这句话简单明了,相信大家一看就完全明白了。

补充说明

以上程序,在实际运行中可能会导致异常,catch (Exception e) 输出异常信息:
java.net.SocketException: Permission denied(maybe missing INTERNET permission)
需要在AndroidManifest.xml中定义相应的权限,如下:

Xml代码 
  1. <uses-permission android:name=”android.permission.INTERNET” />  
 


注意在<application>也可以定义INTERNET权限,如下:

Xml代码 
  1. <application android:permission=”android.permission.INTERNET”>  
 


这种权限似乎还是会导致异常,看来两种权限除了作用的范围有所不同,具体的作用也是有些不同的,以后开发中需要注意两者的区别。

总结说明

本篇幅就简要说明Android SDK提供的与网络有关的package,并列举了一个的简单的网络实例,后续篇幅中会有更加详细的介绍。

 

 

 

原文地址:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-3614.html

原创粉丝点击