編輯:關於Android編程
Environment.getExternalStorageDirectory(Environment.DIRECTORY_DOWNLOAD) 公共目錄中的download目錄中
package com.qf.day12_storage_external; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import com.qf.day12_storage_external.tools.HttpUtils; import com.qf.day12_storage_external.tools.SDCardUtils; public class MainActivity extends Activity { private ImageView iv; private String path = "http://img5.duitang.com/uploads/blog/201602/21/20160221193234_EtLYz.jpeg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); } public void downLoad(View v) { //如果sd卡中有圖片, 則取出並顯示 Bitmap bitmap = SDCardUtils.getBitmap(path); if(bitmap!=null) { iv.setImageBitmap(bitmap); } else { //如果sd卡中沒有圖片, 開啟異步任務下載圖片, 並且將下載好的圖片存入sd卡中 new MyTask().execute(path); } } public void show(View v) { Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); } /** * 自定義 異步任務 下載圖片 * @author Administrator * */ public class MyTask extends AsyncTask { @Override protected Bitmap doInBackground(String... params) { // TODO 下載圖片 byte[] data = HttpUtils.getByteResult(params[0]); if(data!=null && data.length>0) { //將下載好的圖片, 存入sd卡中 SDCardUtils.saveImg(params[0], data); return BitmapFactory.decodeByteArray(data, 0, data.length); } return null; } @Override protected void onPostExecute(Bitmap result) { // TODO 更新UI super.onPostExecute(result); if(result!=null) { iv.setImageBitmap(result); Toast.makeText(MainActivity.this, "圖片下載成功!!", Toast.LENGTH_SHORT).show(); }else Toast.makeText(MainActivity.this, "數據加載失敗,請稍後再試...", Toast.LENGTH_SHORT).show(); } } }
package com.qf.day12_storage_external;
import com.qf.day12_storage_external.tools.SDCardUtils;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class SecondActivity extends Activity {
private EditText nameEdit,contentEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
nameEdit = (EditText) findViewById(R.id.file_name);
contentEdit = (EditText) findViewById(R.id.content_id);
}
//保存
public void save(View v)
{
//得到輸入框的內容
String fileName = nameEdit.getText().toString().trim();
String content = contentEdit.getText().toString().trim();
//向sd卡的私有目錄中存入數據
SDCardUtils.savePrivate(this,fileName,content);
}
//打開
public void open(View v)
{
String fileName = nameEdit.getText().toString().trim();
//根據名稱 從sd卡的私有目錄中得到內容
String content = SDCardUtils.open(this,fileName);
contentEdit.setText(content);
}
}
package com.qf.day12_storage_external.tools;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
/**
* Http 加載網絡數據
* @author Administrator
*
*/
public class HttpUtils {
/**
* 加載網絡數據
* @param path 路徑
* @return String
*/
public static String getStringResult(String path) {
HttpURLConnection conn = null;
InputStream is = null;
try {
//1, 得到URL 對象
URL url = new URL(path);
//2, 打開連接
conn = (HttpURLConnection) url.openConnection();
//3, 設置請求方式
conn.setRequestMethod("GET");
//4, 連接
conn.connect();
//5, 判斷返回的結果碼 (200),得到響應數據
if(conn.getResponseCode() == 200)
{
is = conn.getInputStream();
StringBuilder sBuilder = new StringBuilder();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer))!=-1) {
sBuilder.append(new String(buffer,0,len));
}
return sBuilder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}finally
{
if(conn!=null)
{
conn.disconnect();
}
if(is!=null)
{
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
/**
* 加載網絡圖片
* @param path
* @return byte[]
*/
public static byte[] getByteResult(String path)
{
HttpURLConnection conn = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try {
//1, 得到URL 對象
URL url = new URL(path);
//2, 打開連接
conn = (HttpURLConnection) url.openConnection();
//3, 設置請求方式
conn.setRequestMethod("GET");
//4, 連接
conn.connect();
//5, 判斷返回的結果碼 (200),得到響應數據
if(conn.getResponseCode() == 200)
{
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len=is.read(buffer))!=-1) {
baos.write(buffer, 0, len);
baos.flush();
}
return baos.toByteArray();
}
} catch (Exception e) {
e.printStackTrace();
}finally
{
if(conn!=null)
{
conn.disconnect();
}
if(is!=null)
{
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(baos!=null)
{
try {
baos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
}
package com.qf.day12_storage_external.tools;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.Buffer;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
/**
* sd 卡的存儲
* @author Administrator
*
*/
public class SDCardUtils {
//保存圖片的目錄
//private static final String PATH = Environment.getExternalStorageDirectory()+"/1614/img/";
private static final String PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+File.separator;
/**
* 判斷當前的sd卡是否可用
*
* MEDIA_MOUNTED SD的可用狀態
* @return
*/
public static boolean isMounted()
{
//1, 得到當前sd的狀態
String state = Environment.getExternalStorageState();
//2, 跟系統提供的掛載狀態比較
return state.equals(Environment.MEDIA_MOUNTED);
}
/**
* 從圖片路徑中, 獲取圖片的名稱
* @param path
* @return
*/
public static String getFileName(String path)
{
return path.substring(path.lastIndexOf("/")+1);
}
/**
* 保存圖片到sd卡的公共目錄中
* @param path 圖片的路徑 (截取圖片名稱)
* @param data 圖片內容
* @throws Exception
*/
public static void saveImg(String path,byte[] data)
{
FileOutputStream fos = null;
try {
//1, 判斷當前的sd卡是否可用
if(!isMounted()) return;
//2, 判斷當前緩存的目錄是否存在, 如果不存在 級聯創建
File dir = new File(PATH);
if(!dir.exists())
{
dir.mkdirs();//級聯創建
}
//3, 將圖片的字節,寫入到指定的文件中
fos = new FileOutputStream(new File(dir, getFileName(path)));
fos.write(data);
} catch (Exception e) {
e.printStackTrace();
}finally
{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 根據圖片的名稱, 從sd卡的公共目錄中, 讀取圖片內容
* @param path
* @return
*/
public static Bitmap getBitmap(String path)
{
if(!isMounted()) return null;
File file = new File(PATH, getFileName(path));
if(file.exists())
{
//把絕對路徑中的圖片 轉成Bitmap格式
return BitmapFactory.decodeFile(file.getAbsolutePath());
}
return null;
}
/**
* 向Sd卡的私有目錄中寫入內容
* @param fileName
* @param content
*/
public static void savePrivate(Context context,String fileName, String content) {
//判斷sd卡的狀態是否可用
if(!isMounted()) return;
//Sd卡的私有根目錄 context.getExternalFilesDir(null)
//context.getExternalCacheDir() 緩存中
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(content.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
finally
{
if(fos!=null)
{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 根據文件名稱 讀取外部存儲私有目錄中的文件內容
* @param context
* @param fileName
* @return
*/
public static String open(Context context, String fileName) {
String result = null;
if(!isMounted()) return result;
//創建外邊存儲的文件對象
//context.getExternalCacheDir() 緩存中
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName);
FileInputStream fis = null;
BufferedReader reader = null;
StringBuilder sBuilder = new StringBuilder();
try {
fis = new FileInputStream(file);
reader = new BufferedReader(new InputStreamReader(fis));
String line = null;
while ((line= reader.readLine())!=null) {
sBuilder.append(line);
}
result = sBuilder.toString();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(fis!=null)
{
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(reader!=null)
{
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return result;
}
//----------------------
/**
* 清除sd卡指定目錄中的數據
*/
public static void clearCaches()
{
if(!isMounted()) return ;
//得到緩存目錄中的文件
File file = new File(PATH);
if(file.exists())
{
//列出指定目錄中的所有文件
File[] files = file.listFiles();
for(File fl: files)
{
fl.delete();//刪除文件
}
}
}
/**
* 判斷sd卡的可用空間
*/
public static boolean isAvailable()
{
if(!isMounted()) return false;
//1, 實例化文件管理系統的狀態對象 StatFs
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long size = 0; //字節
if(Build.VERSION.SDK_INT >=18)
{
size = statFs.getFreeBytes();
}else
{
//可用的代碼塊 * 每個塊的大小
size = statFs.getFreeBlocks() * statFs.getBlockSize();
}
//可用空間必須大於10M , 則表示可以使用
if(size > 10*1024*1024)
{
return true;
}
return false;
}
}

Android 集成支付寶支付詳解
一說到支付寶,相信沒有人不知道,生活中付款,轉賬都會用到。今天來詳細介紹下在android中如何集成支付寶支付到自己的APP中去。讓APP能夠擁有方便,快捷的支付功能。准
android學習八(ListView的高級使用)
ListView在android開放中用的比較多,所以接下來就進行ListView的使用的講解。 首先創建一個android項目,項目名為ListViewTest. Li
Android手機使用Fiddler方法介紹
Fiddler是一款免費的抓包、調試工具,比Wireshark要小巧,更簡潔,本節就來介紹如何通過WIFI來抓取Android手機的HTTP和HTTPS包。一、連接And
Android通過ksoap2這個框架調用webservice大講堂
昨天有人問我Android怎麼連接mysql數據庫,和對數據庫的操作呀,我想把,給他說說json通信,可是他並不知道怎麼弄,哎算了吧,直接叫他用ksoap吧,給他說了大半