使用uri将照片路径传递到另一个活动

时间:2018-08-16 21:49:21

标签: java android android-studio

对于按钮onclick侦听器,我有以下方法

 titleBar.setRightBtnOnclickListener(v -> {
        savePicture();
        PublishActivity.openWithPhotoUri(this, Uri.fromFile(photoPath));
    });

我希望能够将照片的文件路径传递给其他活动 我在这里保存位图

private void savePicture(){
    //加滤镜
    final Bitmap newBitmap = Bitmap.createBitmap(mImageView.getWidth(), mImageView.getHeight(),
            Bitmap.Config.ARGB_8888);
    Canvas cv = new Canvas(newBitmap);
    RectF dst = new RectF(0, 0, mImageView.getWidth(), mImageView.getHeight());
    try {
        cv.drawBitmap(mGPUImageView.capture(), null, dst, null);
    } catch (InterruptedException e) {
        e.printStackTrace();
        cv.drawBitmap(currentBitmap, null, dst, null);
    }
    //加贴纸水印
    EffectUtil.applyOnSave(cv, mImageView);

    new SavePicToFileTask().execute(newBitmap);
}

然后在这里使用异步

public class SavePicToFileTask extends AsyncTask<Bitmap,Void,String>{
    Bitmap bitmap;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        showProgressDialog("图片处理中...");
    }

    @Override
    protected String doInBackground(Bitmap... params) {
        String fileName = null;
        try {
            bitmap = params[0];

            String picName = TimeUtils.dtFormat(new Date(), "yyyyMMddHHmmss");
             fileName = ImageUtils.saveToFile(FileUtils.getInst().getPhotoSavedPath() + "/"+ picName, false, bitmap);
            photoPath = new File(fileName);
        } catch (Exception e) {
            e.printStackTrace();
            toast("图片处理错误,请退出相机并重试", Toast.LENGTH_LONG);
        }
        return fileName;
    }

    @Override
    protected void onPostExecute(String fileName) {
        super.onPostExecute(fileName);
        dismissProgressDialog();
        if (StringUtils.isEmpty(fileName)) {
            return;
        }
    }
}

所以在获取照片路径时遇到麻烦,然后使用Uri将其传递到下一个活动 谢谢大家

1 个答案:

答案 0 :(得分:0)

您应该使用Intent将文件名作为字符串传递。

Intent intent = new Intent(getBaseContext(), NEWACTIVITYNAME.class);
intent.putExtra("FILE_NAME", fileName);
startActivity(intent);

然后,您可以在下一个活动中访问该意图:

String fileName = getIntent().getStringExtra("fileName");