博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android网络笔记
阅读量:4358 次
发布时间:2019-06-07

本文共 5209 字,大约阅读时间需要 17 分钟。

(1)网络状态:

ConnectivityManager负责管理所有连接的服务(如:系统服务,3G/4G,WiFi,蓝牙等)。查看网络状态的类是NetWorkInfo,它是通过ConnectivityManager来获得,可以用来检测当前网络类型,当前网络状态。网络状态在一下场景需要使用,界面上需要表述当前的网络状态,根据不同的网络状态来处理逻辑,需要判断网络情况来开启服务。下面以一个demo来说明

package com.example.connectivitymanagerdemo;import android.app.Activity;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {	private Button btn;	private TextView tv;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);				tv=(TextView) findViewById(R.id.textView1);		btn=(Button) findViewById(R.id.button1);				btn.setOnClickListener(new View.OnClickListener() {						@Override			public void onClick(View v) {				//获取连接管理实例				ConnectivityManager cm=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);				//获得一个激活的网络连接实例				NetworkInfo ni=cm.getActiveNetworkInfo();				if(ni==null){					tv.setText("网络没有激活,请打开网络");				}else{					if(ni.getState().equals(NetworkInfo.State.CONNECTED)){						tv.setText("网络已经连接");					}else{						tv.setText("网络没有连接");					}				}			}		});	}	}

(2)网络数据的获取HttpURLConnection的使用

我们可以如同对文件的读写来操作网络的访问,通过InputStream流来获取数据,通过OutputStream来发送数据

HttpURLConnection可以用来接受和发送数据:通过HttpURLConnection实例调用getInputStream()可以获得inputStream

创建URL : URL url=new URL(Web_URL);

创建HttpURLConnection连接: connection=(HttpURLConnection)url.openConnection();

添加网络权限:<uses-permission android:name="android.permission.INTERNET"/>

网络访问总是存在阻塞的可能:需要放到主线程之外去访问,否则会抛出异常

HttpURLConnection创建好了以后,就可以使用该对象的发送Http请求了,Http请求通常分为get请求和Post请求,采用get请求只适合发送大小在1024个字节以内的数据,当要发送较大的数据时,就需要使用Post方式来发送请求。HttpURLConnection对象发送Http请求时候,默认的是get请求,使用post来发送请求的时候要使用setRequestMethod()方法进行指定Http请求方式

(3)使用Apache组织提供的HttpClient来实现网络的访问,其使用方法,和HttpURLConnection类似。下面以一个demo来简单说明实现方式

package com.example.httpconnectiondemo;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {	static final String StringUrl = "http://www.weather.com.cn/data/sk/101010100.html";	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		Button btn = (Button) findViewById(R.id.button1);		btn.setOnClickListener(new View.OnClickListener() {			@Override			public void onClick(View v) {				MyAsyncTask task = new MyAsyncTask();				task.execute();			}		});	}	class MyAsyncTask extends AsyncTask
{ @Override protected String doInBackground(Void... params) { try { // 建立url // URL url = new URL(StringUrl); // 获得连接 // HttpURLConnection con = (HttpURLConnection) // url.openConnection(); // 获取输入流 // InputStream is = con.getInputStream(); // 通过HttpClient的方式来获取数据 HttpGet get = new HttpGet(StringUrl); HttpClient client = new DefaultHttpClient(); HttpResponse res = client.execute(get); if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { InputStream is = res.getEntity().getContent(); StringBuffer sb = new StringBuffer(); int c = 0; while ((c = is.read()) != -1) { sb.append((char) c); } return sb.toString(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); TextView tv = (TextView) findViewById(R.id.textView1); tv.setText(result); } }}

(4)使用webVIew组件浏览网页,可以使用webView和javaScript进行交互,下面以一个实例来说明javaScript和webview的交互过程

首先在assert文件夹下面穿件一个html文件,文件代码如下:

这里的Android.showMyToast(toast)是调用的android里面自己写好的接口里的方法

在src中添加一个javascript的类,文件代码如下:

package com.example.webview_javascript_demo;import android.content.Context;import android.webkit.JavascriptInterface;import android.widget.Toast;public class Myjavascript {	private Context context;	public Myjavascript(Context context) {		this.context = context;	}	@JavascriptInterface   //api17 以上一定要加这句话,才可以识别它可以用作javascript中	public void showMyToast(String toast) {		Toast.makeText(context, toast, 2000).show();	}}

最后在住界面代码中使用webView和javaScript进行交互代码如下

package com.example.webview_javascript_demo;import android.content.Context;import android.webkit.JavascriptInterface;import android.widget.Toast;public class Myjavascript {	private Context context;	public Myjavascript(Context context) {		this.context = context;	}	@JavascriptInterface   //api17 以上一定要加这句话,才可以识别它可以用作javascript中	public void showMyToast(String toast) {		Toast.makeText(context, toast, 2000).show();	}}

最终实现效果如下:

 

转载于:https://www.cnblogs.com/deng-c-q/p/5249686.html

你可能感兴趣的文章
完全卸载MySQL数据库
查看>>
C#总结项目《影院售票系统》编写总结一
查看>>
Failed to stop iptables.service: Unit iptables.service not loaded.
查看>>
madpaly 移植到 TQ2440 遇到问题madplay not found (2)
查看>>
LISTVIEW显示JPEG缩略图
查看>>
YII中引用自定义类
查看>>
Unity 基础
查看>>
Python字符串切片操作知识详解
查看>>
利用python批量修改word文件名的方法示例
查看>>
【洛谷 P3227】 [HNOI2013]切糕(最小割)
查看>>
web.xml中监听器配置
查看>>
Leeo 智能夜灯:默默守护你的家
查看>>
MVC4网站发布到windows server 2003服务器
查看>>
《构建之法》读书笔记
查看>>
细说多线程(上)
查看>>
最长公共子序列(不连续)
查看>>
微服务:Java EE的拯救者还是掘墓人?
查看>>
如何在Centos里面,把.net core程序设为开机自启动
查看>>
1920*1080pc端适配
查看>>
Nutch系列1:简介
查看>>