android - 错误:不兼容的类型:任务无法转换为 Uri
问题描述
我想获取我在 Firebase 中上传的图片的网址。要获取图像,我需要拥有Url
特定图像的。但是在获取过程中出现了问题。输出框显示以下内容:
错误:不兼容的类型:任务无法转换为 Uri
如果我使用Task<Uri>
图像 url 变得不同。与乌里相比。
private void startPosting() {
if (filePath != null) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Uploading...");
progressDialog.show();
final StorageReference ref = mStorage.child("Quote_Image" + UUID.randomUUID().toString());
ref.putFile(filePath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
progressDialog.dismiss();
Toast.makeText(adminUpdateQuotesSend.this , "Uploaded" , Toast.LENGTH_SHORT).show();
mDatbase = FirebaseDatabase.getInstance().getReference().child("Quotes");
DatabaseReference newPost = mDatbase.push();
Uri down=ref.getDownloadUrl();
Uri dow=down;
newPost.child("ImageUrl").setValue(ref.getDownloadUrl());
// newPost.child("Positivity").setValue(PositiveDesc);
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot
.getTotalByteCount());
progressDialog.setMessage("Uploaded " + (int) progress + "%");
}
});
}
}
错误在这行代码上闪烁:
Uri down=ref.getDownloadUrl();
解决方案
您收到以下错误:
不兼容的类型:任务不能转换为 Uri
因为ref.getDownloadUrl()
返回一个Task
对象而不是一个Uri
对象。Java 中没有办法将Task
对象转换为Uri
对象。
为了获取下载 url,您需要使用addOnSuccessListener
,如以下代码行所示:
ref.putFile(filePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String url = uri.toString();
//Do what you need to do with url
}
});
}
});
推荐阅读
- javascript - 如何通过麦克风通过语音为我网页上的用户自动填写表单?
- python - 如何获取 pg.infiniteLine 已在 pyqtgraph 中移动的事件
- wordpress - Wordpress Ultimate Member:不处于编辑模式时无法查看页面上的所有自定义字段
- python - 如何在多个位置或功能访问从列表中选择的项目
- javascript - 如何让 http-server(npm 包)接受 ES6 模块语法?
- ios - `setCollectionViewLayout` 动画在更改集合视图框架时中断
- c - Fseek 回滚 8 个字节,但我希望它是 4 个字节
- ios - iOS 设备是否将 GPS 位置存储在其 .mov 文件中
- react-native - 如何在 React Native Paper 中更改 list.accordion 上的rippleColor 效果的颜色
- woocommerce - 修改后的图像 WooCommerce 缺货消息仅适用于非托管库存