访问相册并返回选中图片的物理地址

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();
                }

            }
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值