將數據保存發送到電子郵件中備份,首要前提應該先在模擬器中設置好電子郵件帳戶,設置如下:
- 第一步,啟動模擬器,打開“菜單”,選擇“電子郵件”項,填寫相應帳號和密碼。
- 第二步,點擊NEXT,程序自動配置電子郵件相關信息。
- 第三步,配置完成後,輸入相應的名稱信息,即可設置完成,接下來程序會默認幫你導入你輸入郵箱帳號的相關信息
業務邏輯如下:示例中有一個文本框用來模擬用戶的信息,當程序退出的時候保存文本檔的信息,並轉到發送郵件的頁面,讓用戶把信息保存到郵箱 裡面。具體代碼參考如下:
發送信息保存到郵箱
package com.terry;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.EditText;
public class networkActivity extends Activity {
private EditText myEditText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myEditText=(EditText)findViewById(R.id.myEditText4);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK)
{
//發送郵件地址
Uri uri=Uri.parse("mailto:[email protected]");
//創建intent
Intent it=new Intent(Intent.ACTION_SENDTO,uri);
it.putExtra(android.content.Intent.EXTRA_SUBJECT, "網絡存儲");
it.putExtra(android.content.Intent.EXTRA_TEXT, myEditText.getText());
startActivity(it);
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
擴展
既然發送數據保存到網絡上,當然也可以獲得網絡上的數據,下面我們通過一個小例子來實現從網路上加載一個txt文件的小說程序 。如圖:
邏輯代碼如下:首先創建一個我們要訪問的URL地址,然後取鏈接的文件,循環把數據讀取出來。具體代碼參考如下:
讀取XML代碼參考
package com.terry;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.util.ByteArrayBuffer;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class readxmlActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.readxml);
TextView tv=(TextView)findViewById(R.id.TextView01);
String msg="";
try {
URL url=new URL("http://www.az1314.com/txt/00.txt"); //要訪問的數據文件
URLConnection con=url.openConnection();
InputStream is=con.getInputStream();
BufferedInputStream bis=new BufferedInputStream(is);
ByteArrayBuffer baf=new ByteArrayBuffer(100);
int current=0;
while ((current=bis.read())!= -1) {
baf.append((byte)current);
}
msg=new String(baf.toByteArray());
} catch (Exception e) {
// TODO: handle exception
msg=e.getMessage();
}
tv.setText(msg);
}
}
方法講解:
URL共有六種構造方法,分別如下:
- URL(String spec)
通過傳進來的字符串分析,創建一個新的URL實例。
- URL(URL context, String spec)
通過傳進來的字符串分析,創建一個新的URL實例。需要一個URL的參數
- URL(URL context, String spec, URLStreamHandler handler)
通過傳進來的字符串分析,創建一個新的URL實例
- URL(String protocol, String host, String file)
使用給定的參數創建一個URL實例,需要指定協議,主機文件名
- URL(String protocol, String host, int port, String file)
使用給定的參數創建一個URL實例,需要指定協議,主機,端口和文件名
- URL(String protocol, String host, int port, String file, URLStreamHandler handler)
使用給定的參數創建一個URL實例,需要指定協議,主機,端口、文件名和處理程序
URLConnection介紹:
- 用以來實現提供一個具有特定協議類的連接源。
- getInputStream 主要用來讀取一個URLConnection的資源數據,返回一個InputStream,本文將使用這個方法獲取數據
在此不多介紹URLConnection此類,感興趣的朋友可以查看一下SDK。代碼如上,運行效果圖:
因為在模擬器運行。 出現亂碼了,如果你有真機不妨在真機上試試。
Tip: 訪問外部網絡需要在配置文件中給予權限,如果你沒有權限將會出現如下界面:
權限代碼如下:
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".networkActivity"
android:label="@string/app_name">
</activity>
<activity android:name=".readxmlActivity"><intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
至此四種數據存儲完結。
源碼下載:/Files/TerryBlog/NetworkdDemo.rar