`
ko8e
  • 浏览: 50505 次
  • 性别: Icon_minigender_1
  • 来自: 龙岩
社区版块
存档分类
最新评论

Android数据存储之Network

阅读更多

这篇文章是转载的。。。

http://byandby.iteye.com/blog/833612

 

 

 

这篇文章演示2个例子 一个是发送电子邮件,一个是我们从网络上获取数据,然后显示在一个TextVew上。

通过网络来获取和保存数据资源,这个方法需要设备保持网路连接状态,所以相对存在一些限制。将数据存储到网络上的方法很多,比如将要保存的数据以文件的方式上传到服务器、发送邮件等等。在我们的这个示例中演示的是我们将在应用程序退出时,将数据发送到电子邮件中备份,要发送电子邮件首先需要在电子邮件中配置电子邮件账户。下面我们就来一步一步配置电子邮件账户。

大家去菜单里边点击电子邮件来进行配置,这里就不详细说了 具体流程看一下图片吧。







配置好电子邮件后,我们就可以通过程序来调用模拟器的电子邮件客户端发送邮件了。Android中发送电子邮件是通过 startActivity 方法来调用要发送的邮件数据的 Intent。我们可以通过putExtra 方法来设置邮件的主题、内容、附件等等。当我们点击返回按钮----> back的时候,就会出现发送邮件的界面如下图



当我们点击发送的时候就会发送到我的邮箱一封邮件 我截了图



下面我们就来看看这个发送邮件的功能是怎么实现的吧。
Activity01类

Java代码 复制代码
  1. package xiaohang.zhimeng;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.view.KeyEvent;
  7. public class Activity01 extends Activity {
  8. private int miCount = 0 ;
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super .onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. miCount = 1000 ;
  14. }
  15. public boolean onKeyDown( int keyCode, KeyEvent event) {
  16. if (keyCode == KeyEvent.KEYCODE_BACK) {
  17. // 退出应用程序时保存数据
  18. /* 发送邮件的地址 */
  19. Uri uri = Uri.parse("mailto:yongjinquanli@gmail.com" );
  20. // 创建Intent
  21. Intent it = new Intent(Intent.ACTION_SENDTO, uri);
  22. // 设置邮件的主题
  23. it.putExtra(android.content.Intent.EXTRA_SUBJECT, "数据备份" );
  24. // 设置邮件的内容
  25. it.putExtra(android.content.Intent.EXTRA_TEXT, "本次计数:" + miCount);
  26. // 开启
  27. startActivity(it);
  28. return true ;
  29. }
  30. return super .onKeyDown(keyCode, event);
  31. }
  32. }
package xiaohang.zhimeng;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;

public class Activity01 extends Activity {

	private int miCount = 0;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		miCount = 1000;
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			// 退出应用程序时保存数据
			/* 发送邮件的地址 */
			Uri uri = Uri.parse("mailto:yongjinquanli@gmail.com");

			// 创建Intent
			Intent it = new Intent(Intent.ACTION_SENDTO, uri);

			// 设置邮件的主题
			it.putExtra(android.content.Intent.EXTRA_SUBJECT, "数据备份");

			// 设置邮件的内容
			it.putExtra(android.content.Intent.EXTRA_TEXT, "本次计数:" + miCount);

			// 开启
			startActivity(it);
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}



既然可以将数据发送到网络上保存,当然也可以获得网络上的数据,下面我们就演示一下怎么通过网络来读取一个文件的内容,然后将其显示在我们事先定义好的 TextView上,这需要一个web服务器了。 我用了tomcat 。我们先看看要读取的文件的内容是什么。



我们来看一下是怎么实现的,这里提醒一下大家 用中文会有中文乱码问题需要解决一下,直接看代码吧。

Activity01

Java代码 复制代码
  1. package xiaohang.zhimeng;
  2. import java.io.BufferedInputStream;
  3. import java.io.InputStream;
  4. import java.net.URL;
  5. import java.net.URLConnection;
  6. import android.app.Activity;
  7. import android.graphics.Color;
  8. import android.os.Bundle;
  9. import android.widget.TextView;
  10. public class Activity01 extends Activity {
  11. @Override
  12. public void onCreate(Bundle savedInstanceState) {
  13. super .onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. TextView tv = new TextView( this );
  16. String myString = null ;
  17. try {
  18. /* 定义我们要访问的地址url */
  19. URL uri = new URL( "http://192.168.0.100:8080/examples/xh.txt" );
  20. /* 打开这个url */
  21. URLConnection uConnection = uri.openConnection();
  22. // 从上面的链接中取得InputStream
  23. InputStream is = uConnection.getInputStream();
  24. // new 一个带缓冲区的输入流
  25. BufferedInputStream bis = new BufferedInputStream(is);
  26. /* 解决中文乱码 */
  27. byte [] bytearray = new byte [ 1024 ];
  28. int current = - 1 ;
  29. int i = 0 ;
  30. while ((current = bis.read()) != - 1 ) {
  31. bytearray[i] = (byte ) current;
  32. i++;
  33. }
  34. myString = new String(bytearray, "GB2312" );
  35. } catch (Exception e) {
  36. // 获取异常信息
  37. myString = e.getMessage();
  38. }
  39. // 设置到TextView颜色
  40. tv.setTextColor(Color.RED);
  41. // 设置字体
  42. tv.setTextSize(20 .0f);
  43. tv.setText(myString);
  44. // 将TextView显示到屏幕上
  45. this .setContentView(tv);
  46. }
  47. }
package xiaohang.zhimeng;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;

public class Activity01 extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);

		TextView tv = new TextView(this);

		String myString = null;

		try {
			/* 定义我们要访问的地址url */
			URL uri = new URL("http://192.168.0.100:8080/examples/xh.txt");

			/* 打开这个url */
			URLConnection uConnection = uri.openConnection();

			// 从上面的链接中取得InputStream
			InputStream is = uConnection.getInputStream();

			// new 一个带缓冲区的输入流
			BufferedInputStream bis = new BufferedInputStream(is);

			/* 解决中文乱码 */
			byte[] bytearray = new byte[1024];
			int current = -1;
			int i = 0;
			while ((current = bis.read()) != -1) {
				bytearray[i] = (byte) current;
				i++;
			}

			myString = new String(bytearray, "GB2312");
		} catch (Exception e) {
			// 获取异常信息
			myString = e.getMessage();
		}
		// 设置到TextView颜色
		tv.setTextColor(Color.RED);
		// 设置字体
		tv.setTextSize(20.0f);
		tv.setText(myString);

		// 将TextView显示到屏幕上
		this.setContentView(tv);
	}
}


下面我们来看看程序运行的效果。



由于在程序中访问了外部网络,我们需要在AndroidManifest.xml 文件中给予权限,代码如下:
<uses-permission android:name="android.permission.INTERNET" />

这2个例子的源码都在附件里边。

分享到:
评论

相关推荐

    android 数据存储之 Network

    NULL 博文链接:https://byandby.iteye.com/blog/833612

    Android开发之数据存储的四种方式之一:Network存储

    在上一篇《Android开发之数据存储的四种方式之一:SharedPreferences》中介绍了SharedPreferences存储本地数据的应用,在这个案例里,封装了HttpURLConnection请求、HttpClient请求和AsyncHttpClient请求,将需要...

    Android开发笔记之Android中数据的存储方式(二)

    今天我们在讲下Android开发笔记之Android中数据的存储方式(一) 提到的除了SharedPreferences和Files(文本文件)以外的其他几种数据储存方式:xml文件、SQLite数据和Network。 1.3 例子  3. xml:  小案例:...

    数据存储练习

    public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate... startActivity(new Intent(this, NetworkActivity.class)); } }

    android开发揭秘PDF

    6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享...

    《Android应用开发揭秘》附带光盘代码.

     6.1 Android数据存储初探  6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  6.5 Android数据库编程  6.5.1 SQLite简介  6.5.2 SQLite编程详解  6.5.3 SQLiteOpenHelper...

    Android应用开发揭秘pdf高清版

    6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享...

    《Android应用开发揭秘》源码

     6.1 Android数据存储初探  6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  6.5 Android数据库编程  6.5.1 SQLite简介  6.5.2 SQLite编程详解  6.5.3 SQLiteOpenHelper...

    Android应用开发揭秘(pdf )

     如何通过Shared Preferences、Files、Network和SQLite等方式高效实现Android数据的存储?又如何通过Content Providers轻松地实现Androld数据的共享?  如何使用Open Core、MediaPlayer、MediaRecorder方便快速地...

    ServiceTest_android_

    Android Network数据存储应用实例-附源码

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    《Android应用开发揭秘》源码.rar

     ·如何通过shared preferences、files、network和sqlite等方式高效实现android数据的存储?又如何通过content providers轻松地实现android数据的共享?  ·如何使用open core、mediaplayer、mediarecorder方便...

    android 面试2

    请介绍下Android的数据存储方式。  答:SharedPreferences键值对的存储  SQlite数据库存储  Files文件存储  NetWork网络存储 ContentProvider  7. 请介绍下ContentProvider是如何实现数据共享的。 答:...

    通用Android工具库Common4Android.zip

    Common4Android是一个通用Android工具库,包含网络库、线程管理器、常用Util工具、热修复,它拥有良好的架构,低耦合、高内聚,使用起来非常轻松。 -基类 ClassName Description ...

    Android开发宝典.rar

    数据存储Data Storage 52 概览Storage quickview 52  系统偏好:快速,轻量级存储 52  文件:存储到设备内部或可移动闪存 52  数据库:任意的结构化存储 52  支持基于网络的存储 52 系统偏好...

    Android代码-CommonLibary

    CommonLibrary主要是自己整理的一些项目开发中常用的工具类、通用UI的集合,目前在不断的更新中,尽可能的覆盖Android开发中通用的一些东西 。 &gt; anim &gt; -- AnimationUtils、ViewAnimationUtils。动画工具类,也可...

    Android 网络状态实时监听代码实例(一)

    其实手机在网络方面的的...&lt;uses android:name=android.permission.ACCESS_NETWORK_STATE/&gt; &lt;uses android:name=android.permission.INTERNET&gt; 2、新建一个Application类并继承android.app.Application 申明变量保存

Global site tag (gtag.js) - Google Analytics