Android文件图片上传的详细讲解(三)---模式回调类

来源:互联网 发布:《大数据时代》pdf 编辑:程序博客网 时间:2024/05/16 13:03
Java代码  收藏代码
  1. package com.easyway.fileupload;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.app.Dialog;  
  6. import android.content.ContentResolver;  
  7. import android.content.DialogInterface;  
  8. import android.content.Intent;  
  9. import android.database.Cursor;  
  10. import android.graphics.Bitmap;  
  11. import android.graphics.BitmapFactory;  
  12. import android.net.Uri;  
  13. import android.os.Bundle;  
  14. import android.provider.MediaStore;  
  15. import android.util.Log;  
  16. import android.view.View;  
  17. import android.view.View.OnClickListener;  
  18. import android.widget.Button;  
  19. import android.widget.ImageView;  
  20. /** 
  21.  * Activity 上传的界面 
  22.  *  
  23.  * @Title:  
  24.  * @Description: 实现TODO 
  25.  * @Copyright:Copyright (c) 2011 
  26.  * @Company:易程科技股份有限公司 
  27.  * @Date:2012-7-2 
  28.  * @author  longgangbai 
  29.  * @version 1.0 
  30.  */  
  31. public class AndroidUploadFilesActivity extends Activity implements OnClickListener{  
  32.  private static final String TAG = "uploadImage";  
  33.    
  34.  private Button selectImage,uploadImage;  
  35.  private ImageView imageView;  
  36.    
  37.  private String picPath = null;  
  38.    
  39.     /** Called when the activity is first created. */  
  40.     @Override  
  41.     public void onCreate(Bundle savedInstanceState) {  
  42.         super.onCreate(savedInstanceState);  
  43.         setContentView(R.layout.main);  
  44.           
  45.         selectImage = (Button) this.findViewById(R.id.selectImage);  
  46.         uploadImage = (Button) this.findViewById(R.id.uploadImage);  
  47.         selectImage.setOnClickListener(this);  
  48.         uploadImage.setOnClickListener(this);  
  49.           
  50.         imageView = (ImageView) this.findViewById(R.id.imageView);  
  51.           
  52.           
  53.     }  
  54.       
  55.  @Override  
  56.  public void onClick(View v) {  
  57.   switch (v.getId()) {  
  58.   case R.id.selectImage:  
  59.    /*** 
  60.     * 这个是调用android内置的intent,来过滤图片文件   ,同时也可以过滤其他的   
  61.     */  
  62.    Intent intent = new Intent();  
  63.    intent.setType("image/*");  
  64.    intent.setAction(Intent.ACTION_GET_CONTENT);  
  65.    //回调图片类使用的  
  66.    startActivityForResult(intent, RESULT_CANCELED);  
  67.    break;  
  68.   case R.id.uploadImage:  
  69.    if(picPath!=null&&picPath.length()>0)  
  70.    {  
  71.     UploadFileTask uploadFileTask=new UploadFileTask(this);  
  72.     uploadFileTask.execute(picPath);  
  73.    }  
  74.    break;  
  75.   default:  
  76.    break;  
  77.   }  
  78.  }  
  79.   
  80.  /**  
  81.   * 回调执行的方法  
  82.   */  
  83.  @Override  
  84.  protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  85.   if(resultCode==Activity.RESULT_OK)  
  86.   {  
  87.    /** 
  88.     * 当选择的图片不为空的话,在获取到图片的途径   
  89.     */  
  90.    Uri uri = data.getData();  
  91.    Log.e(TAG, "uri = "+ uri);  
  92.    try {  
  93.     String[] pojo = {MediaStore.Images.Media.DATA};  
  94.       
  95.     Cursor cursor = managedQuery(uri, pojo, nullnull,null);  
  96.     if(cursor!=null)  
  97.     {  
  98.      ContentResolver cr = this.getContentResolver();  
  99.      int colunm_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);  
  100.      cursor.moveToFirst();  
  101.      String path = cursor.getString(colunm_index);  
  102.      /*** 
  103.       * 这里加这样一个判断主要是为了第三方的软件选择,比如:使用第三方的文件管理器的话,你选择的文件就不一定是图片了,这样的话,我们判断文件的后缀名 
  104.       * 如果是图片格式的话,那么才可以    
  105.       */  
  106.      if(path.endsWith("jpg")||path.endsWith("png"))  
  107.      {  
  108.       picPath = path;  
  109.       Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));  
  110.       imageView.setImageBitmap(bitmap);  
  111.      }else{  
  112.       alert();  
  113.      }  
  114.     }else{  
  115.      alert();  
  116.     }  
  117.       
  118.    } catch (Exception e) {  
  119.     e.printStackTrace();  
  120.    }  
  121.   }  
  122.     
  123.   /** 
  124.    * 回调使用 
  125.    */  
  126.   super.onActivityResult(requestCode, resultCode, data);  
  127.  }  
  128.    
  129.  private void alert()  
  130.     {  
  131.      Dialog dialog = new AlertDialog.Builder(this)  
  132.   .setTitle("提示")  
  133.   .setMessage("您选择的不是有效的图片")  
  134.   .setPositiveButton("确定",  
  135.     new DialogInterface.OnClickListener() {  
  136.      public void onClick(DialogInterface dialog,  
  137.        int which) {  
  138.       picPath = null;  
  139.      }  
  140.     })  
  141.   .create();  
  142.   dialog.show();  
  143.     }  
  144.   

0 0