Intent选择器案例

来源:互联网 发布:中国统计年鉴2016数据 编辑:程序博客网 时间:2024/06/09 06:55
@OnClick(R.id.iv_userinfo_avatar_edit)
    public void setavatar(View v){
        Intent intent1=new Intent(Intent.ACTION_PICK);
        //点击编辑头像的小铅笔,弹出Intent Chooser
                //从图库选择头像的intent
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");

                //拍照intent
                Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                File file = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),System.currentTimeMillis()+".jpg" );
                cameraPath = file.getAbsolutePath();
                //在BmobDemo项目中提交头像的地方,少写了一步
                //在拍照后保存图片的时候会导致异常
                //正确的写法是传入Uri,不是直接传入路径
                Uri uri = Uri.fromFile(file);
                intent2.putExtra(MediaStore.EXTRA_OUTPUT, uri);

                //创建Intent Chooser
                Intent chooser = Intent.createChooser(intent, "选择头像...");
                chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{intent2});

                startActivityForResult(chooser, 101);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK&&requestCode==101){
            if(data!=null){
                //从图库中返回
                //用户从图库中选择的图片,在图库中显示的地址
                Uri uri=data.getData();
                avatarView.setImageURI(uri);
                //根据uri反查在磁盘中的地址
            Cursor cursor=getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA},
                        null, null, null);
            cursor.moveToNext();
            filePath=cursor.getString(0);
            cursor.close();
            }else{
                //拍照返回
                Options opts=new Options();
                opts.inSampleSize=8;//压缩比例
                filePath=cameraPath;
            }
        }
        BmobProFile.getInstance(this).upload(filePath, new UploadListener() {
            
            @Override
            public void onError(int arg0, String arg1) {
                avatarUrl = "";
                showToastAndLog("上传头像失败,稍后重试", arg0+": "+arg1);
            }
            
            @Override
            public void onSuccess(String arg0, String arg1, BmobFile arg2) {
                //在上传完毕后的回调中为avatarUrl属性赋值
                avatarUrl = arg2.getUrl();
                //在ivAvatar中显示上传成功后的头像
                ImageUtil.displayImage(avatarUrl, avatarView);
            }
            @Override
            public void onProgress(int arg0) {
            }
        });
    }
0 0
原创粉丝点击