Andriod 文件上传 (二) android端UI

很简单的UI。点击按钮然后从图片库中选择图片上传(非主线程)。

andriod 主LoadActivity的代码如下:

public class LoadActivity extends Activity {

	public static final String  TAG_STRING="LoadActivity";
	private  String pathString=null;
	static final int flag_load=4;
	private Button button=null;
	private userUploadService service=new userUploadServiceImpl();
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_load);
        
        button=(Button) this.findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				 String status = Environment  
                         .getExternalStorageState();  
				  if (status.equals(Environment.MEDIA_MOUNTED)) {// 判断是否有SD卡  
					      
				         Intent intent=new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
				         startActivityForResult(intent, flag_load);
				  }
				
			}
		});
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.load, menu);
        return true;
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	
    	super.onActivityResult(requestCode, resultCode, data);
    	if(requestCode==flag_load)
    	{
    		if(data==null)
    		{
    			Toast.makeText(this, "你没有选择任何图片", Toast.LENGTH_LONG).show();
    		}
    		else 
    		{
    			
    			
    			Uri uri=data.getData();
    			if (uri==null) {
    				Toast.makeText(this, "你没有选择任何图片", Toast.LENGTH_LONG).show();
				}
    			else {
    				
					String path=null;
					String[] pojoStrings={MediaStore.Images.Media.DATA};
					Cursor cursor=getContentResolver().query(uri, pojoStrings, null, null, null);
					if(cursor!=null)
					{
						
						int col=cursor.getColumnIndexOrThrow(pojoStrings[0]);
						cursor.moveToFirst();
						path=cursor.getString(col);
						cursor.close();
					}
					if(path==null)
					{
						Toast.makeText(this, "未获得图片路径", Toast.LENGTH_LONG).show();
					}
					else {
						Toast.makeText(this, "图片路径为"+path, Toast.LENGTH_LONG).show();
						pathString=path;
						new AlertDialog.Builder(this)
						               .setTitle("提示")
						               .setMessage("你要选择这张图片上传么?") 
					                   .setPositiveButton("确定",new DialogInterface.OnClickListener() {
										
										@Override
										public void onClick(DialogInterface dialog, int which) {
											doUpload();
											
										}

										

									} ).create().show();
						               
					}                   
				}
    			
    		}
    	}
    	
    }
    private void doUpload() {
		
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				try {
					InputStream in=new FileInputStream(new File(pathString));
					Map<String, String>data=new HashMap<String, String>();
					data.put("Name", "liuming");
					data.put("Gender", "男");
					
					final String retString=service.userUpload(in, data,pathString);
					
					
					Log.d(TAG_STRING, retString);
				} catch (Exception e) {
					e.printStackTrace();
//					runOnUiThread(new Runnable() {
//						public void run() {
//							Toast.makeText(LoadActivity.this, "上传更新出错", Toast.LENGTH_LONG).show();
//						}
//					});
				}
				
			}
		}).start();
	}
}
<span style="font-family: Arial, Helvetica, sans-serif;">service.userUpload(in, data,pathString)</span>
为处理上传逻辑的接口类实现。
传送门:点击打开链接



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。