Android 小項目之--數據存儲【Network】(附源碼)
https://www.cnblogs.com/TerryBlog/archive/2010/06/20/1761411.html
將數據保存發送到電子郵件中備份,首要前提應該先在模擬器中設置好電子郵件帳戶,設置如下:
- 第一步,啟動模擬器,打開“菜單”,選擇“電子郵件”項,填寫相應帳號和密碼。
- 第二步,點擊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:285735942@qq.com"); //創建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地址,然後取鏈接的文件,循環把數據讀取出來。具體代碼參考如下:
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("https://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: 訪問外部網絡需要在配置文件中給予權限,如果你沒有權限將會出現如下界麵:
配置文件中給予權限:
<uses-permission
android:name="android.permission.INTERNET"/>
最後更新:2017-04-02 17:51:23