首页 > 解决方案 > 在android中创建文件路径

问题描述

当我在图库中裁剪现有图像时的代码

 final Uri uri = result.getUri();
 StorageReference thumb_filepath = mStorage.child("Raw").child(UID + ".jpg");
 File thumb_filePath = new File(uri.getPath());
 Log.d("DFGHJKFGHJ", "CREATED FILEEEE" + thumb_filePath);

日志猫结果

 02-23 13:51:20.053 11130-11130/com.appmaster.akash.messageplus D/DFGHJKFGHJ: CREATED FILEEEE/data/user/0/com.appmaster.akash.messageplus/cache/cropped9075402641648633426.jpg

现在我使用相同的方法从 firebase 获取图像并将其转换为 uri 然后 FIle 但输出不同

代码

Uri uri = null;
uri = Uri.parse(String.valueOf(url));
Log.d("DFGHJKFGHJ", "CREATED URI : " + uri);

File thumb_filePath = new File(uri.getPath());
Log.d("DFGHJKFGHJ", "CREATED FILEEEE" + thumb_filePath);

正在创建 URI,但文件的输出是

02-23 13:50:48.326 11130-11130/com.appmaster.akash.messageplus D/DFGHJKFGHJ: CREATED FILEEEE/v0/b/messageplus-cd647.appspot.com/o/hackerpic.jpg

因此,下一个功能也不起作用。所以任何人都可以帮我获得像第一个firebase图像一样的输出吗?

标签: javaandroiddatabasefirebasesqlite

解决方案


从 firebase 存储下载图像并保存在本地:

private void downloadImgFromFStorageToLocalFile(StorageReference fileRef) {
    if (fileRef != null) {
        progressDialog.setTitle("Downloading...");
        progressDialog.setMessage(null);
        progressDialog.show();

        try {
            final File localFile = File.createTempFile("images", "jpg");

            fileRef.getFile(localFile).addOnSuccessListener(new 
                OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(FileDownloadTask.TaskSnapshot 
                 taskSnapshot) {
                    Bitmap bmp = 
                    BitmapFactory.decodeFile(localFile.getAbsolutePath());
                    imgViewProfile.setImageBitmap(bmp);
                    progressDialog.dismiss();
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    progressDialog.dismiss();
                    Toast.makeText(MainActivity.this, exception.getMessage(), 
                    Toast.LENGTH_LONG).show();
                }
            }).addOnProgressListener(new 
                OnProgressListener<FileDownloadTask.TaskSnapshot>() {
                @Override
                public void onProgress(FileDownloadTask.TaskSnapshot 
                 taskSnapshot) {
                    // progress percentage
                    double progress = (100.0 * 
                      taskSnapshot.getBytesTransferred()) / 
                      taskSnapshot.getTotalByteCount();
                    // percentage in progress dialog
                    progressDialog.setMessage("Downloaded " + ((int) progress) 
                                                            + "%...");
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        Toast.makeText(MainActivity.this, "File ref is null", 
             Toast.LENGTH_LONG).show();
    }
}

推荐阅读