我面临的问题是,在使用Gallery Intent从Gallery中选择图像时,虽然图像存储在Firebase存储中,但不显示在ImageView中。相反,占位符消失,什么也看不见。另外,我对Android和Firebase还不熟悉。
附上相同的截图。
上传前
上传后
以下是我的代码:
public class EditProfile extends AppCompatActivity {
Button selectImage, save_data_editProfile;
EditText editText, editText2;
ImageView imageView;
private StorageReference mStorage;
private Toolbar mToolBar;
private FirebaseDatabase mFirebaseDatabase;
private FirebaseAuth mFirebaseAuth;
private ProgressDialog mProgress;
private ImageButton mphotoPickerButton;
private String currentUserEmail;
private static final int GALLERY_INTENT = 2;
private DatabaseReference mCurrentUserDatabaseReference;
private Context mView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_profile);
//selectImage = (Button) findViewById(R.id.selectImage);
save_data_editProfile = (Button) findViewById(R.id.save_data_editProfile);
//imageView = (ImageView) findViewById(R.id.imageView);
editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
mView = EditProfile.this;
initializeScreen();
openImageSelector();
initializeUserInfo();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){
mStorage = FirebaseStorage.getInstance().getReference(); //make global
super.onActivityResult(requestCode, requestCode, data);
if(requestCode ==GALLERY_INTENT && resultCode == RESULT_OK){
mProgress.setMessage("Uploading...");
mProgress.show();
Uri uri = data.getData();
//Keep all images for a specific chat grouped together
final String imageLocation = "Photos/profile_picture/" + currentUserEmail;
final String imageLocationId = imageLocation + "/" + uri.getLastPathSegment();
final String uniqueId = UUID.randomUUID().toString();
final StorageReference filepath = mStorage.child(imageLocation).child(uniqueId + "/profile_pic");
final String downloadURl = filepath.getPath();
filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//create a new message containing this image
addImageToProfile(downloadURl);
mProgress.dismiss();
}
});
}
}
public void addImageToProfile(final String imageLocation){
final ImageView imageView = (ImageView) findViewById(R.id.imageView);
mCurrentUserDatabaseReference
.child("profilePicLocation").setValue(imageLocation).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
StorageReference storageRef = FirebaseStorage.getInstance()
.getReference().child(imageLocation);
//Picasso.get().load(imageLocation).into(imageView);
Glide.with(mView)
.using(new FirebaseImageLoader())
.load(storageRef)
.bitmapTransform(new CropSquareTransformation(mView))
.into(imageView);
}
}
);
}
public void openImageSelector(){
mphotoPickerButton = (ImageButton) findViewById(R.id.imageButton);
mProgress = new ProgressDialog(this);
mphotoPickerButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, GALLERY_INTENT);
//mView = view;
}
});
}
private void initializeUserInfo(){
final ImageView imageView = (ImageView) findViewById(R.id.imageView);
mCurrentUserDatabaseReference
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
try{
if(user.getProfilePicLocation() != null){
StorageReference storageRef = FirebaseStorage.getInstance()
.getReference().child(user.getProfilePicLocation());
Glide.with(mView)
.using(new FirebaseImageLoader())
.load(storageRef)
.bitmapTransform(new CropSquareTransformation(mView))
.into(imageView);
}
}catch (Exception e){
Log.e("Error", e.getMessage());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void initializeScreen(){
mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseDatabase = FirebaseDatabase.getInstance();
currentUserEmail = EmailEncoding.commaEncodePeriod(mFirebaseAuth.getCurrentUser().getEmail());
mCurrentUserDatabaseReference = mFirebaseDatabase
.getReference().child(Constants.USERS_LOCATION
+ "/" + currentUserEmail);
}
}
尝试调用addImageToProfile(taskSnapshot.downloadURl.toString());
在您的On成功监听器和
Glide.with(mView)
.using(new FirebaseImageLoader())
.load(imageLocation)
.bitmapTransform(new CropSquareTransformation(mView))
.into(imageView);
我正在开发一个功能,以删除上传的文件。我目前可以删除云Firestore中的引用,但无法将其从存储中删除。下面的代码应该从存储中删除,但它不起作用 错误消息是“没有请求的auth标记。StorageException已发生。对象在位置不存在。HttpResult:404”。我以为这个问题与我的fileUrl字段有关,但我不确定。fileUrl是下载图像的url,例如,如果我将url复制并粘贴到we
我正在开发一个基于Firebase的聊天演示应用程序的Android应用程序。我面临的问题是,当我想传输图像时,我不知道如何处理这种情况。发送图像时,我在Base64中编码,并将其作为字符串发送。那么这里对图像的解码过程又会是怎样的呢?
我有一个问题与我的代码,我必须上传图像到Firebase存储,我需要的图像来自画廊和相机,从画廊的图像是好的,但来自相机的图像给问题,图像加载在ImageView和被发送到数据库是黑色的。有人知道如何解决这个问题吗,或者你知道任何其他加载图像的方法吗? 来自画廊 从相机
问题内容: New Firebase的扩展问题检索数据并将其放在tableView(Swift) 通过将Firebase代码移动到viewDidLoad,Post的所有文本部分都可以显示出来。但是我仍然不能将图像放到tableView中。我已经检查了图像检索,并成功了,我想我从Firebase检索的图像不在发布数组中。 这是我的修复代码: 我的Post结构希望对您有所帮助! 希望能得到一些建议!
我正在尝试从Firebase中检索一个Base64编码的图像,并在Android Studio开发的应用程序上显示它。代码正在ImageView元素上放一些东西,但我认为那只是一个白色图像,因为ImageView元素的背景刚好消失了。有人能帮忙吗?
我正在为Waze开发开源JavaScript插件——著名的免费GPS导航器——专门为在线编辑器开发。这个用户脚本的想法是可以快速选择大的统一颜色的地图区域,将它们转换为地标。 到目前为止,我已经成功地在Photoshop这样的图形编辑器中实现了一个你称之为“魔杖”的工具:用户点击地图上的某个地方(比如,在湖泊或森林上),脚本选择相同颜色覆盖的整个区域,并为地标创建一个多边形。 一切都很好,除了我使