Нераспознанный тип запроса: Request{com.google.android.gms.tasks.zzu@5843814

Я пытаюсь загрузить изображение в свое хранилище Firebase из ссылки на мою базу данных. Затем я использую Picasso (реализация com.squareup.picasso: picasso: 2.71828), чтобы получить изображение из ссылки на базу данных. Полный код, который я использую, можно найти здесь https://github.com/kshitiz1007/Lets-Chat хоть с обновленными библиотеками и немного обновите ui. Но следует отметить два файла: SettingActivity, где пользователь выбирает изображение профиля и текстовый статус для помещения в базу данных, и ProfileActivity, где изображение профиля вызывается для использования Picasso.

Насколько я понимаю, в SettingActivity изображение профиля, а также версия изображения профиля с размером большого пальца сохраняются в хэш-карте в SettingActivity:

update_HashMap.put("image",downloadUrl); 
update_HashMap.put("thumb_image",thumb_download_url);
//--------ADDING URL INTO DATABASE REFERENCE-------
mDatabaseReference.updateChildren(update_HashMap).addOnCompleteListener(new 

Моя проблема в том, что при вызове, когда Пикассо вызывает load, отображение изображения источника (String display_image = dataSnapshot.child ("image"). GetValue (). ToString ();) никогда не загружается.

Но я не знаю ни механизма, ни того, как изображение извлекается из хранилища с использованием ссылки на базу данных Firebase. Когда Picasso пытается получить изображение из ссылки на базу данных, он говорит в Run

Журнал

D / Picasso: Основной создан [R22] Request{com.google.android.gms.tasks.zzu@5843814} ...
D / Picasso: Main с ошибкой [R22] + 246 мс Неизвестный тип запроса: Request {com .google.android.gms.tasks.zzu @ 5843814}

База данных Firebase

Хранилище Firebase

Если вы посмотрите вторую картинку, кажется, что на ней есть указатель на задачу, и Пикассо не знает, как использовать эту информацию.

Ниже из SettingActivity.java

public class SettingActivity extends AppCompatActivity {

...

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        //-----STARTING GALLERY----
        if(requestCode == GALLERY_PICK && resultCode == RESULT_OK){

            Uri sourceUri = data.getData();

            //-------CROPPING IMAGE AND SETTING MINIMUM SIZE TO 500 , 500------
            CropImage.activity(sourceUri).
                    setAspectRatio(1,1).
                    setMinCropWindowSize(500,500).
                    start(SettingActivity.this);

        }

        //------START CROP IMAGE ACTIVITY------
        if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE ) {

            //------CROP IMAGE RESULT------
            CropImage.ActivityResult result = CropImage.getActivityResult(data);

            if (resultCode == RESULT_OK) {

                mProgressDialog.setTitle("Uploading Image");
                mProgressDialog.setMessage("Please wait while we process and upload the image...");
                mProgressDialog.setCancelable(false);
                mProgressDialog.setProgress(ProgressDialog.STYLE_SPINNER);
                mProgressDialog.show();

                Uri resultUri = result.getUri();
                File thumb_filepath = new File(resultUri.getPath());
                try {

                    //--------COMPRESSING IMAGE--------
                    Bitmap thumb_bitmap = new Compressor(this).
                            setMaxWidth(200).
                            setMaxHeight(200).
                            setQuality(75).
                            compressToBitmap(thumb_filepath);
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    thumb_bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                     thumb_bytes= baos.toByteArray();


                } catch (Exception e) {
                    e.printStackTrace();
                }

                final StorageReference filepath        = mStorageReference.child("profile_image").child(uid+".jpg");
                final StorageReference thumb_file_path = mStorageReference.child("profile_image").child("thumbs").child(uid+".jpg");

                //------STORING IMAGE IN FIREBASE STORAGE--------
                filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                        if(task.isSuccessful()){

                            @SuppressWarnings("VisibleForTests")
                            final String downloadUrl=  filepath.getDownloadUrl().toString();
                            final UploadTask uploadTask = thumb_file_path.putBytes(thumb_bytes);

                            //---------- STORING THUMB IMAGE INTO STORAGE REFERENCE --------
                            uploadTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                                @Override
                                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> thumb_task) {
                                    @SuppressWarnings("VisibleForTests")
                                    String thumb_download_url = uploadTask.getSnapshot().getMetadata().getReference().getDownloadUrl().toString();
                                    // String thumb_download_url = thumb_task.getResult().getDownloadUrl().toString();
                                    if(thumb_task.isSuccessful()){
                                        Map update_HashMap=new HashMap();

                                        // Download Url stored to HashMap but where is this HashMap and how does it reference storage from database
                                        update_HashMap.put("image",downloadUrl);
                                        update_HashMap.put("thumb_image",thumb_download_url);

                                        //--------ADDING URL INTO DATABASE REFERENCE--------
                                        mDatabaseReference.updateChildren(update_HashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                                            @Override
                                            public void onComplete(@NonNull Task<Void> task) {

                                                if(task.isSuccessful()){
                                                    mProgressDialog.dismiss();
                                                    Toast.makeText(SettingActivity.this, "Uploaded Successfuly...", Toast.LENGTH_SHORT).show();

                                                }
                                                else{
                                                    mProgressDialog.dismiss();
                                                    Toast.makeText(getApplicationContext(), " Image is not uploading...", Toast.LENGTH_SHORT).show();

                                                }

                                            }
                                        });

                                    }
                                    else{
                                        mProgressDialog.dismiss();
                                        Toast.makeText(getApplicationContext(), " Error in uploading Thumbnail..", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });


                        }
                        else{
                            mProgressDialog.dismiss();
                            Toast.makeText(getApplicationContext(), " Image is not uploading...", Toast.LENGTH_SHORT).show();
                        }
                    }
                });

            } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {

                Exception error = result.getError();
            }
        }
    }
}

Ниже из ProfileActivity.java

mfriendReqReference     = FirebaseDatabase.getInstance().getReference().child("friend_request");
mDatabaseReference      = FirebaseDatabase.getInstance().getReference().child("users").child(user_id);
mFriendDatabase         = FirebaseDatabase.getInstance().getReference().child("friends");
mNotificationReference  = FirebaseDatabase.getInstance().getReference().child("notifications");
mRootReference          = FirebaseDatabase.getInstance().getReference();
mFirebaseUser           = FirebaseAuth.getInstance().getCurrentUser();

//----fOR SETTING ONLINE---
getmDatabaseReference   = FirebaseDatabase.getInstance().getReference().child("users").child(mFirebaseUser.getUid());

mProgressDialog         = new ProgressDialog(ProfileActivity.this);
mProgressDialog.setTitle("Fetching Details");
mProgressDialog.setMessage("Please wait...");
mProgressDialog.setProgress(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setCancelable(false);
mProgressDialog.show();

mCurrent_state = "not_friends"; // 4 types--- "not_friends" , "req_sent"  , "req_received" & "friends"

//----ADDING NAME , STATUS AND IMAGE OF USER----
mDatabaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String display_name     = dataSnapshot.child("name").getValue().toString();
        String display_status   = dataSnapshot.child("status").getValue().toString();
        String display_image    = dataSnapshot.child("image").getValue().toString();

        mProfileName.setText(display_name);
        mProfileStatus.setText(display_status);

        Picasso.get()
                .load(display_image)
                .placeholder(R.drawable.user_img)
                .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
                .into(mProfileImage);

        // ---------------------------------------------------------------------------------
        //https://stackoverflow.com/questions/46071230/use-glide-load-into-imageview-but-delay?rq=1
        /*RequestOptions requestOptions = new RequestOptions();
        requestOptions.placeholder(R.drawable.user_img);

        Glide.with(ProfileActivity.this)
                .setDefaultRequestOptions(requestOptions)
                .load(Uri.parse(display_image))
               // .placeholder(R.drawable.user_img)
                .into(mProfileImage);*/


        //----ADDING TOTAL  NO OF FRIENDS---
        mFriendDatabase.child(user_id).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                long len = dataSnapshot.getChildrenCount();
                mprofileFriendCount.setText("TOTAL FRIENDS : "+len);

                //----SEEING THE FRIEND STATE OF THE USER---
                //----ADDING THE TWO BUTTON-----
                mfriendReqReference.child(mFirebaseUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        //----CHECKING IF FRIEND REQUEST IS SEND OR RECEIVED----
                        if(dataSnapshot.hasChild(user_id)){

                            String request_type = dataSnapshot.child(user_id).child("request_type").getValue().toString();

                            if(request_type.equals("sent")){

                                mCurrent_state="req_sent";
                                mProfileSendReqButton.setText("Cancel Friend Request");
                                mProfileDeclineReqButton.setVisibility(View.INVISIBLE);
                                mProfileDeclineReqButton.setEnabled(false);

                            }

                            else if(request_type.equals("received")){
                                mCurrent_state="req_received";
                                mProfileSendReqButton.setText("Accept Friend Request");
                                mProfileDeclineReqButton.setVisibility(View.VISIBLE);
                                mProfileDeclineReqButton.setEnabled(true);
                            }

                            mProgressDialog.dismiss();
                        }

                        //---USER IS FRIEND----
                        else{

                            mFriendDatabase.child(mFirebaseUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                                    mProfileDeclineReqButton.setVisibility(View.INVISIBLE);
                                    mProfileDeclineReqButton.setEnabled(false);

                                    if(dataSnapshot.hasChild(user_id)){
                                        mCurrent_state="friends";
                                        mProfileSendReqButton.setText("Unfriend This Person");
                                    }
                                    mProgressDialog.dismiss();
                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {

                                    mProgressDialog.dismiss();
                                }
                            });

                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                        Toast.makeText(ProfileActivity.this, "Error fetching Friend request data", Toast.LENGTH_SHORT).show();
                    }
                });


            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

person user3213239    schedule 01.07.2018    source источник
comment
Я понял. Похоже, проблема была в SettingActivity.java, где я поместил неправильную ссылку на загрузку при обновлении устаревшего кода.   -  person user3213239    schedule 02.07.2018
comment
Звучит как (основная) опечатка. Если это действительно так, возможно, лучше удалить этот вопрос, поскольку он никому не пригодится.   -  person André Kool    schedule 02.07.2018
comment
Я думаю, это будет полезно, потому что даже после исправления ошибки, которую я заметил два дня назад, у меня все еще была та же ошибка. Ни один из старых способов получить URL-адрес загрузки не работает. Этот код давно устарел, но текущее программное обеспечение все еще использует его. Чтобы получить URL-адрес загрузки, следуйте формату firebase.google.com / docs / storage / android / и используйте последнюю строку downloadUrl = downloadUri.toString ();   -  person user3213239    schedule 04.07.2018
comment
Если вы считаете, что это полезно, и вы исправили это, я предлагаю вам написать ответ, чтобы другие люди, которые нашли это, могли извлечь выгоду из вашего решения.   -  person André Kool    schedule 04.07.2018


Ответы (1)


Правильный способ получения downloadUrl после загрузки здесь

person X-Black...    schedule 06.04.2020