package com.pps.customcrash; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView; import com.pps.customcrash.base.BaseActivity; /** * �������ݷ������ * @author jiangqingqing * @time 2012/10/14 14:50 */ public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent=getIntent(); //��ȡIntent��Action String action=intent.getAction(); //��ȡIntent��MIME Type String type=intent.getType(); if(Intent.ACTION_SEND.equals(action)&&type!=null){ // ���ﴦ���ı����� if(type.startsWith("text/")) { handleSendText(intent); } // ���ﴦ��ͼƬ else if (type.startsWith("image/")) { handleSendImage(intent); } }else if (Intent.ACTION_SEND_MULTIPLE.equals(action)&&type!=null) { if(type.startsWith("image/")) { // ���ﴦ�����ͼƬ HandleSendImageMutiply(intent); } } } /** * ͬTextView��ʾ�ı� * ���Դ�һ����ı��ļ� * @param pIntent */ private void handleSendText(Intent pIntent) { TextView textView=new TextView(this); // ���͵�ʱ��ʹ��Intent.putExtra(Intent.EXTRA_TEXT)�� String sharedText=pIntent.getStringExtra(Intent.EXTRA_TEXT); if(sharedText!=null){ textView.setText(sharedText); } Uri textUri=(Uri)pIntent.getParcelableExtra(Intent.EXTRA_STREAM); if(textUri!=null){ try { InputStream inputStream= this.getContentResolver().openInputStream(textUri); textView.setText(inputStreamToString(inputStream)); } catch (Exception e) { } } setContentView(textView); } /** * * @param pInStream * @return */ private String inputStreamToString(InputStream pInStream)throws Exception { ByteArrayOutputStream bos=new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int length=0; while((length=pInStream.read(buffer))!=-1) { bos.write(buffer, 0, length); } pInStream.close(); return new String(bos.toByteArray(), "UTF-8"); } // ������ͼƬ private void handleSendImage(Intent pIntent) { Uri ImageUri=(Uri)pIntent.getParcelableExtra(Intent.EXTRA_STREAM); if(ImageUri!=null) { ImageView image=new ImageView(this); image.setImageURI(ImageUri); setContentView(image); } } // �������ͼƬ private void HandleSendImageMutiply(Intent pIntent) { final ArrayList<Uri> imageUris= pIntent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); if(imageUris!=null) { GridView gridView=new GridView(this); gridView.setColumnWidth(30); gridView.setNumColumns(GridView.AUTO_FIT); gridView.setAdapter(new GridAdapter(this, imageUris)); gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent _Intent=new Intent(); _Intent.setAction(Intent.ACTION_SEND); _Intent.putExtra(Intent.EXTRA_STREAM, imageUris.get(position)); _Intent.setType("iamge/*"); startActivity(Intent.createChooser(_Intent, "����ͼƬ")); } }); } } class GridAdapter extends BaseAdapter { private Context mContext; private List<Uri> list; public GridAdapter(Context pContext,List<Uri> pList) { this.mContext=pContext; this.list=pList; } @Override public int getCount() { return list!=null?list.size():0; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if(convertView==null) { imageView=new ImageView(mContext); imageView.setPadding(8, 8, 8, 8); }else { imageView = (ImageView)convertView; } imageView.setImageURI(list.get(position)); return imageView; } } }