码迷,mamicode.com
首页 > 其他好文 > 详细

网络应用(一)

时间:2015-08-03 12:52:01      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

通过加载现有的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"/>

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

 




 

 

网络应用(一)

标签:

原文地址:http://www.cnblogs.com/dawn-rainy/p/4698871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!