网络应用(一)

通过加载现有的Web页面来实现安卓应用的功能是一种常见的方法。

代码如下:

import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button btn=(Button) findViewById(R.id.open_url);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
			  Uri uri=Uri.parse("http://translate.google.cn/");
			  Intent intent=new Intent(Intent.ACTION_VIEW,uri);
			  startActivity(intent);
			}
		});
	}

}

Uri.parse()方法返回的是一个URI类型,通过这个URI可以访问一个网络上的或者本地的资源。Intent()方法告诉系统调用哪个组件来打开这个URI。

Intent.ACTION_VIEW,指的是调用系统里面的浏览器来打开指定的网页。

这个网页会显示到浏览器打开的网页上。

-----------------------------------------------------------

更多的时候,我们希望页面能够在应用内部打开,以方便添加一些需要的功能。可使用WebView控件。

WebView是安卓的浏览器组件,负责打开HTML文件,setContent() 方法动态的添加布局,loadUrl()方法从网址加载一个页面,loadData()和loadDataWithBaseURL()方法都是从字符串来加载一个页面。

相关原型如下:

public void loadUrl(String url) {
       }

public void loadData(String data, String mimeType, String encoding) {
    }

public void loadDataWithBaseURL(String baseUrl, String data,
            String mimeType, String encoding, String failUrl) {
    }

data:数据字符串

mimeType:表明数据的MIME类型,如text/html

Encoding:数据的编码

注意:1、loadUrl方法在遇到错误网页的时候不会报出异常,且loadData方法不能处理js、https等格式的页面特效。如果需要检测页面异常,可以先对页面进行判定,使用loadDataWithBaseURL可以加载https等特殊页面。

2、打开的网页,当应用到某一些功能时,需要跳转到别的页面,这已经超出了应用的控制范围,如果希望应用仍然显示在该应用内部,可以使用webView的setWebViewClient()方法来解决这个问题。

3、为了更好地服务使用者,在很多情况下需要保存用户搜索过的页面。要实现这个功能,需要保存加载的页面。首先通过网址生成URL对象,然后打开链接,写入Buffer中,最后写入字符串中,方便进一步的处理。

--------------------------------------

// 保存加载过的页面
	public void savahistory(String url){
		try {
			URL newurl = new URL(url);
			URLConnection connect = newurl.openConnection();
			DataInputStream dis=new  DataInputStream(connect.getInputStream());
			BufferedReader in=new BufferedReader(new InputStreamReader(dis, "UTF-8"));
			String html="";
			String readLine=null;
			while((readLine=in.readLine())!=null){
				html=html+readLine;
				Log.d("OpenWebViewActivity",readLine);
			}
			in.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}

一定要加网络权限

添加权限的位置,一定要在application之前,否则在某些高版本的编译器中不能通过,或者没有效果。

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

--------------------------------------

时间: 2024-10-09 08:37:09

网络应用(一)的相关文章

android网络应用开发完全解析

??Android网络应用开发,主要有两种方式,一种是socket(是对tcp/udp协议的封装),另外一种就是使用Http协议,Android中主要提供了两种方式,HttpURLConnection和Apache HttpClient.下面对Android网络应用开发进行具体的阐述. 一.基于socket的网络通信 1.基于udp的socket编程步骤 定义码头 即:定义一个DatagramSocket对象ds 定义可以用来接收或者发送数据的集装箱 即:定义DatagramPacket对象dp

JavaScript异步编程设计快速响应的网络应用

JavaScript已然成为了多媒体.多任务.多内核网络世界中的一种单线程语言.其利用事件模型处理异步触发任务的行为成就了JavaScript作为开发语言的利器.如何深入理解和掌握JavaScript异步编程变得尤为重要!!!<JavaScript异步编程设计快速响应的网络应用>提供了一些方法和灵感. 一.深入理解JavaScript事件 1. 事件的调度 JavaScript事件处理器在线程空闲之前不会运行(空闲时运行). var start = new Date(); setTimeout

使用 libevent 和 libev 提高网络应用性能

使用 libevent 和 libev 提高网络应用性能 Martin C. Brown, 作家, Freelance 简介: 构建现代的服务器应用程序需要以某种方法同时接收数百.数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作.有许多解决方案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力.在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法.libev 和 libevent 都可以在高性能应用程序中使

使用完整读写函数的网络应用程序

使用完整读写函数的网络应用程序 Linux的设计原则是将硬件设备抽象成文件,用户可以像操作文件一样操作设备,前边已经说过,我们可以使用文件操作函数操作套接字. 使用read函数读取套接字另一端发送过来的内容,使用write函数也可以向套接字另一端发送内容.但是,在网络环境中有一个很大的问题就是延时的问题,对于本地文件夹来说,字节流在本地传输的延时可以忽略不计,但是网络环境中传输延时可能会很长造成I/O阻塞.其次,网络应用程序要能够处理因为中断或者网络连接等问题造成的读写操作异常返回. 对于第一个

使用 Java 开发兼容 IPv6 的网络应用程序

根据现有 IPv4 地址的部署速度,剩余的地址将在 10 到 20 年被使用殆尽.因此网络逐渐从 IPv4 向 IPv6 转换是不可避免的,相应的各种网络应用程序都将支持 IPv6.对于 Java,从其 1.4 版开始对 IPv6 提供了较好的支持,对程序员基本屏蔽了 IPv4 和 IPv6 的差异,但其中仍有一些 IPv6 引起的变化需要我们小心处理.针对这一情况,本文介绍了如何运用现有的 Java 技术应对这些变化. IPv6 背景介绍 目前我们使用的是第二代互联网 IPv4 技术,它的最大

基于MINA框架快速开发网络应用程序

1.MINA框架简介 MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架.通过使用MINA框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中.MINA框架的应用比较广泛,应用的开源项目有Apache Directory.AsyncWeb.Apache Qpid.QuickFIX/J.Openfire.SubEthaSTMP.red5

使用 libevent 和 libev 提高网络应用性能——I/O模型演进变化史

构建现代的服务器应用程序需要以某种方法同时接收数百.数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作. 有许多解决方案,但事件驱动也被广泛应用到网络编程中.并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序.ftp 服务器程序等.相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率. 这些事件驱动模型中, libevent 库和 libev库能够大大提高性能和事件处理能力.在本文中,我们要讨论在 UNIX/

IGMPv3广播电视网络应用案例之PIM-SSM技术

广播电视网络应用案例之PIM-SSM技术 一. PIM-SSM技术简介 组播业务模型分为SSM(Source-Specific Multicast,指定信源组播)模型和ASM(Any-Source Multicast,任意信源组播)模型.其中,ASM模型包括PIM-DM和PIM-SM两种组播业务模式,两者的相同点在于:都是使用组播组地址来标识一个组播会话. SSM模型与ASM不同之处在于,需要使用组播组地址和组播源地址,同时来标识一个组播会话.SSM模型需要通过IGMPv3的配合来维护主机与路由

Twitter Lite以及大规模的高性能React渐进式网络应用

Twitter Lite以及大规模的高性能React渐进式网络应用 原文:Twitter Lite and High Performance React Progressive Web Apps at Scale 译者:neal1991 welcome to star my articles-translator, providing you advanced articles translation. Any suggestion, please issue or contact me LIC

DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)

DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现) @author:wepon @blog:http://blog.csdn.net/u012162613/article/details/43277187 本文代码下载地址:我的github 本文主要讲解将CNN应用于人脸识别的流程,程序基于python+numpy+theano+PIL开发,采用类似LeNet5的CNN模型,应用于olivettifaces人脸数据库,实现人脸识别的功能,模型的