android - Android Firebase - 将图像从drawable上传到存储
问题描述
我正在尝试从可绘制文件夹中获取图像并将其保存在 Firebase 存储中。要保存我使用的图像UploadTask
,它需要一个 Uri 文件。来自drawable的图像是int。无论如何可以将该 int 转换为 Uri?
请查看我的代码
private void saveProfileImgToStorage(final User user) {
storageRef = FirebaseStorage.getInstance().getReference();
StorageReference userImgProfile = storageRef.child("/usersProfiles/" + currentUser.getUid() +"/profile_image");
UploadTask uploadTask;
//What should i do here??
//This is the path of the image "R.drawable.ic_account"
uploadTask = userImgProfile.putFile();
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri firebaseURL = taskSnapshot.getDownloadUrl();
user.setProfilePic(firebaseURL.toString());
uploadToFirebaseDatabase(user);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG,e.getMessage().toString());
}
});
}
编辑
找到了解决方案
//This how i should write it - and now it works!
Uri imageUri = Uri.parse("android.resource://"+ R.class.getPackage().getName()+"/"+R.drawable.profile_image);
UploadTask uploadTask;
uploadTask = userImgProfile.putFile(imageUri);
解决方案
要从存储到可绘制的图像中获取 uri,只需执行以下操作
Uri imageUri = Uri.parse("android.resource://your.package.name/" + R.drawable.ic_account);
干净一点
Uri imageUri = Uri.parse("android.resource://" + context.getPackageName() +
R.drawable.ic_account);
如果您引用 Activity 或Fragment,context
可以在哪里。this
getActivity()
要将其上传到 Firebase,您需要执行此操作
File file = new File(imageUri.getPath());
接着
uploadTask = userImgProfile.putFile(file);
推荐阅读
- twitter-bootstrap - 无法更改工具提示的背景颜色
- javascript - React.js 应用程序向 Django 后端发送请求时出现 CORS 问题
- codeigniter-3 - 遇到未捕获的异常,类型:RuntimeException
- jsviews - Jsviews树控件展开后引发第二次点击事件
- vb.net - System.StackOverflowException 在我的 VB.NET 测验中发生在哪里?
- typescript - Cookie 设置/读取无法始终如一地工作(第一个有效,第二个无效)
- java - 如何在没有登录和 cli 的情况下在 Aws ec2 上运行 .Jar 文件?
- javascript - IBM Cloud Function 不产生任何输出
- azure-devops - Azure DevOps - 发布管道 - 部署后执行测试
- javascript - 如何修复“TypeError:无法设置属性 'width' of null”?