Как загрузить изображение в firebase и получить его с помощью picasso
Я следую учебнику, который показывает вам, как создать такое приложение, как WhatsApp, но у меня очень и очень трудное время с одной проблемой.
Когда пользователь переходит в свою SettingsActivity, он видит свое изображение по умолчанию, имя и статус. Когда я нажимаю на изображение по умолчанию, я иду в галерею на своем телефоне и выбираю изображение, которое я хочу использовать. Когда я выбираю его, я обрезаю изображение, а затем нажимаю на слово обрезать в правом верхнем углу. Я получаю сообщение, что он обрезает изображение, а затем говорит, что загрузка изображения прошла успешно.
Когда я смотрю в свою базу данных Firebase, это то, что я вижу, что изображение хранится как
"com.google.android.gms.tasks.zzu@44d8fb0". But even though it's in the Database it's still showing me the default profile pic. When I click update and then go back to the SettingsActivity there is no picture where the profile pic is suppose to be. Not even the default image. I tried debugging this and changing my code around but nothing help me. Can anyone help me ? SettingsActivity : <pre> private Button UpdateAccountSettings; private EditText userName, userStatus; private CircleImageView userProfileImage; private String currentUserID; private FirebaseAuth mAuth; private DatabaseReference RootRef; private static final int GalleryPick = 1; private StorageReference UserProfileImagesRef; private ProgressDialog loadingBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); mAuth = FirebaseAuth.getInstance(); currentUserID = mAuth.getCurrentUser().getUid(); RootRef = FirebaseDatabase.getInstance().getReference(); UserProfileImagesRef = FirebaseStorage.getInstance().getReference().child("Profile Images"); InitializeFields(); userName.setVisibility(View.INVISIBLE); UpdateAccountSettings.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { UpdateSettings(); } }); RetrieveUserInfo(); userProfileImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent galleryIntent = new Intent(); galleryIntent.setAction(Intent.ACTION_GET_CONTENT); galleryIntent.setType("image/*"); startActivityForResult(galleryIntent, GalleryPick); } }); } private void InitializeFields() { userName = (EditText) findViewById(R.id.set_user_name); userStatus = (EditText) findViewById(R.id.set_profile_status); userProfileImage = (CircleImageView) findViewById(R.id.set_profile_image); loadingBar = new ProgressDialog(this); UpdateAccountSettings = (Button) findViewById(R.id.update_settings_button); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == GalleryPick && resultCode==RESULT_OK && data!=null){ Uri ImageUri = data.getData(); CropImage.activity() .setGuidelines(CropImageView.Guidelines.ON) .setAspectRatio(1,1) .start(this); } if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { CropImage.ActivityResult result = CropImage.getActivityResult(data); if(resultCode == RESULT_OK){ loadingBar.setTitle("Set Profile Image"); loadingBar.setMessage("Please wait your profile image is updating..."); loadingBar.setCanceledOnTouchOutside(false); loadingBar.show(); final Uri resultUri = result.getUri(); StorageReference filePath = UserProfileImagesRef.child(currentUserID + ".jpg"); filePath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() { @Override public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) { if(task.isSuccessful()) { Toast.makeText(SettingsActivity.this, "Profile pic upload successful", Toast.LENGTH_SHORT).show(); String downloadUrl = task.getResult().getMetadata().getReference().getDownloadUrl().toString(); RootRef.child("Users").child(currentUserID).child("image") .setValue(downloadUrl) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if(task.isSuccessful()){ Toast.makeText(SettingsActivity.this, "Image is saved", Toast.LENGTH_SHORT).show(); loadingBar.dismiss(); } else { String message = task.getException().toString(); Toast.makeText(SettingsActivity.this, "Error: " + message, Toast.LENGTH_SHORT).show(); loadingBar.dismiss(); } } }); } else { String message = task.getException().toString(); Toast.makeText(SettingsActivity.this, "Error: " + message, Toast.LENGTH_SHORT).show(); loadingBar.dismiss(); } } }); } } } private void UpdateSettings() { String setUserName = userName.getText().toString(); String setStatus = userStatus.getText().toString(); if(TextUtils.isEmpty(setUserName)){ Toast.makeText(this, "Please enter your user name...", Toast.LENGTH_SHORT).show(); } if(TextUtils.isEmpty(setStatus)){ Toast.makeText(this, "Please write your status...", Toast.LENGTH_SHORT).show(); } else { HashMap<String, Object> profileMap = new HashMap<>(); profileMap.put("uid", currentUserID); profileMap.put("name", setUserName); profileMap.put("status", setStatus); RootRef.child("Users").child(currentUserID).updateChildren(profileMap) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if(task.isSuccessful()){ SendUserToMainActivity(); Toast.makeText(SettingsActivity.this, "Profile Updated Successfully", Toast.LENGTH_SHORT).show(); } else{ String message = task.getException().toString(); Toast.makeText(SettingsActivity.this, "Error:", Toast.LENGTH_SHORT).show(); } } }); } } private void RetrieveUserInfo() { RootRef.child("Users").child(currentUserID) .addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("name") && (dataSnapshot.hasChild("image")))) { String retrieveUserName = dataSnapshot.child("name").getValue().toString(); String retrieveStatus = dataSnapshot.child("status").getValue().toString(); String retrieveProfileImage = dataSnapshot.child("image").getValue().toString(); userName.setText(retrieveUserName); userStatus.setText(retrieveStatus); Picasso.get().load(retrieveProfileImage).into(userProfileImage); } else if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("name"))) { String retrieveUserName = dataSnapshot.child("name").getValue().toString(); String retrieveStatus = dataSnapshot.child("status").getValue().toString(); userName.setText(retrieveUserName); userStatus.setText(retrieveStatus); } else { userName.setVisibility(View.VISIBLE); Toast.makeText(SettingsActivity.this, "Update your info", Toast.LENGTH_SHORT).show(); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); } private void SendUserToMainActivity() { Intent mainIntent = new Intent(SettingsActivity.this, MainActivity.class); mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(mainIntent); finish(); }
Это учебник WhatsApp андроида учебник клон 13 - параметры настройки - экран-чат приложение, с помощью опорного пункта - Ютуб[^]
Что я уже пробовал:
Я попытался отладить это приложение.
Изменение мой код вокруг.
Читаю бесконечное количество примеров.
Смотрю кучу видео.
Patrice T
Почему бы не спросить у автора учебника од ?
Member 10906424
Я так и сделал, но он не ответил. Я комментировал и спрашивал в facebook но он так и не ответил
Patrice T
По крайней мере, обновите вопрос ссылкой на учебник.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
Member 10906424
Я не могу найти кнопку Изменить или улучшить вопрос
Patrice T
поместите мышь на нижнюю часть вопроса
Member 10906424
https://www.youtube.com/playlist?list=PLxefhmF0pcPmtdoud8f64EpgapkclCllj
Member 10906424
Вы знаете, что с ним не так ?