android 数据存储之 Network

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

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

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

[img]http://dl.iteye.com/upload/attachment/360960/b06d935f-eefc-3dda-858b-b909b30e3168.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/360962/4d211e52-4ac5-3085-8f9d-2b2bfc9bf2aa.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/360964/d3eee682-4e15-3cb4-b960-63dcf9d7def8.jpg[/img]

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

[img]http://dl.iteye.com/upload/attachment/360967/36393526-929f-386d-afdb-788ae451a10d.jpg[/img]

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

[img]http://dl.iteye.com/upload/attachment/360971/1e4119b6-0974-3749-81ce-243cdfd79054.jpg[/img]

下面我们就来看看这个发送邮件的功能是怎么实现的吧。
Activity01类
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 。我们先看看要读取的文件的内容是什么。

[img]http://dl.iteye.com/upload/attachment/360975/554a3907-bd88-3800-a5fe-9df845cd7e2b.jpg[/img]

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

Activity01
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);
}
}

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

[img]http://dl.iteye.com/upload/attachment/360979/1410903a-9b76-3cd2-bcff-418ca87ec98c.jpg[/img]

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

这2个例子的源码都在附件里边。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值