Xml布局只有一个按钮,点击打开系统相册,选择图片后返回地址并打印出来。
下面是实现代码
public class UploadActivity extends Activity {
private Button btnSecleted;
private static final int FLAG = 1;
private String pathName;
//private UserService userService = new UserServiceImpl();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload);
initView();
}
private void initView() {
btnSecleted = (Button) findViewById(R.id.btn_selected);
btnSecleted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* ACTION_PICK,启动一个子Activity来让你从URI数据处挑选一个项目。当关闭时,它必须返回指向被挑选项目的URI。
* 启动的Activity取决于要挑选的数据;例如,传入content://contacts/people会引发本地的联系人列表。这里是系统是相册的URI地址
*/
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, FLAG);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FLAG) {
if (data == null) {
Toast.makeText(this, "返回图片为空", Toast.LENGTH_LONG).show();
} else {
String path = null;
//得到所选图片的Uri地址
Uri uri = data.getData();
String image[] = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, image, null, null, null);
if (cursor != null) {
int index = cursor.getColumnIndexOrThrow(image[0]);
cursor.moveToFirst();
path = cursor.getString(index);
pathName = path;
cursor.close();
}
if (path != null) {
Toast.makeText(this, "图片的物理路径" + path, Toast.LENGTH_LONG).show();
//弹出对话框是否要上传图片
new AlertDialog.Builder(this).setTitle("上传图片")
.setMessage("是否上传?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
doUpload();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
} else {
Toast.makeText(this, "未能获得图片路径" + path, Toast.LENGTH_LONG).show();
}
}
}
}