Ошибка изображения Пикассо java .lang.BootstrapMethodError: Исключение из метода вызова сайта # 4 bootstrap - PullRequest
0 голосов
/ 24 апреля 2020

, поэтому я создаю приложение для чата, и мои фотографии не отображаются, теперь я использую Picasso и android studio. При комментировании кода, где предполагается, что картинки go все работает, но если я оставляю код там, я получаю эту ошибку java .lang.BootstrapMethodError: Исключение из метода вызова сайта # 4 bootstrap, и приложение вылетает , Я также подключен к хранилищу FireBase. LogCat здесь

java.lang.BootstrapMethodError: Exception from call site #4 bootstrap method
    at okhttp3.internal.Util.<clinit>(Util.java:87)
    at okhttp3.internal.Util.immutableList(Util.java:234)
    at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:124)
    at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:449)
    at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:71)
    at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:50)
    at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:40)
    at com.squareup.picasso.Picasso$Builder.build(Picasso.java:848)
    at com.squareup.picasso.Picasso.get(Picasso.java:683)
    at com.example.room.ProfileFragment$1.onDataChange(ProfileFragment.java:146)


    avatarIv = view.findViewById(R.id.avatarIv);
    nameTv = view.findViewById(R.id.nameTv);
    emailTv =view.findViewById(R.id.emailTv);
    phoneTv = view.findViewById(R.id.phoneTv);
    coverIv = view.findViewById(R.id.coverIv);
    fab = view.findViewById(R.id.fab);





    Query query = databaseReference.orderByChild("email").equalTo(user.getEmail());
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            // until required data get
            for (DataSnapshot ds : dataSnapshot.getChildren()){

                //get data
                String name = "" + ds.child("name").getValue();
                String email = "" + ds.child("email").getValue();
                String phone = "" + ds.child("phone").getValue();
                String image = "" + ds.child("image").getValue();
                String cover = "" + ds.child("cover").getValue();

                //set data
                nameTv.setText(name);
                emailTv.setText(email);
                phoneTv.setText(phone);


               try {
                    Picasso.get().load(image).into(avatarIv);

                }
                catch (Exception e){
                    Picasso.get().load(R.drawable.ic_default_img_white).into(avatarIv);

                }
                try {
                    Picasso.get().load(cover).into(coverIv);

                }
                catch (Exception e){


                }
            }
        }

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

        }
    });

       private void showEditProfileDialog() {
    /*  show dialog containg options
        edit profile
        cover photo
        name
        phone

    * */

    //options to show in dialog

    String options [] = {"Edit Profile Picture ", "Edit Cover Photo ", "Edit Name ", "Edit Phone"};

    // alert dialog

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Choose Action");

    builder.setItems(options, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            if(which==0){
                profileorCoverPhoto = "image";
                showImagePicDialog();
            }else if (which==1){
                // Edit cover click
                profileorCoverPhoto = "cover";
                showImagePicDialog();

            }else if (which==2){
                // Edit name click
                showNamePhoneUpdateDialog("name");

            }else if (which==3){
                // Edit Phone  click
              showNamePhoneUpdateDialog("phone");

            }

        }
    });

    builder.create().show();
}

private void showImagePicDialog() {
    String options [] = {"Camera", "Gallery"};

    // alert dialog

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Pick Image From ");

    builder.setItems(options, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            if (which == 0) {
                // camera clicked

                if(!checkCameraPermission()){
                    reqCameraPermission();
                }
                else {
                    pickFromCamera();
                }

                showImagePicDialog();
            } else if (which == 1) {
                // Gallery cliked
                if (!checkStoragePermission()){
                    reqStoragePermission();
                }
                else {
                    pickFromGallery();
                }


            }
        }
    });

     builder.create().show();
}

private void showNamePhoneUpdateDialog(final String key) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Update" + key);

   LinearLayout linearLayout =new LinearLayout(getActivity());
   linearLayout.setOrientation(LinearLayout.VERTICAL);
    linearLayout.setPadding(10,10,10,10);

    final EditText editText= new EditText(getActivity());
    editText.setHint("Enter" + key);
    linearLayout.addView(editText);

    builder.setView(linearLayout);
    builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //input text
            String value = editText.getText().toString().trim();

            if (!TextUtils.isEmpty(value)){
               HashMap<String, Object> result = new HashMap<>();
               result.put(key, value);

               databaseReference.child(user.getUid()).updateChildren(result)
                       .addOnSuccessListener(new OnSuccessListener<Void>() {
                           @Override
                           public void onSuccess(Void aVoid) {
                               Toast.makeText(getActivity(), "Updated", Toast.LENGTH_SHORT).show();
                           }
                       })
                       .addOnFailureListener(new OnFailureListener() {
                           @Override
                           public void onFailure(@NonNull Exception e) {
                               Toast.makeText(getActivity(), "" +e.getMessage(), Toast.LENGTH_SHORT).show();
                           }
                       });
            }
            else {
                Toast.makeText(getActivity(), "please enter "+key, Toast.LENGTH_SHORT).show();
            }
        }
    });
    //add button to cancel
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();

        }
    });
   builder.create().show();

}





@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    switch (requestCode){
        case CAMERA_REQUEST_CODE:{
            if (grantResults.length>0){
                boolean cameraAccepted = grantResults[0]== PackageManager.PERMISSION_GRANTED;
                boolean writeStorageAccepted = grantResults[1]== PackageManager.PERMISSION_GRANTED;
                if(cameraAccepted && writeStorageAccepted){
                    pickFromCamera();
                }
                else {
                    Toast.makeText(getActivity(), "Please enable camera & storage  permission ", Toast.LENGTH_SHORT).show();
                }
            }
        }
        break;
        case STORAGE_REQUEST_CODE:{

                if (grantResults.length>0){
                    boolean writeStorageAccepted = grantResults[1]== PackageManager.PERMISSION_GRANTED;
                    if(writeStorageAccepted){
                        pickFromGallery();
                    }
                    else {
                        Toast.makeText(getActivity(), "", Toast.LENGTH_SHORT).show();
                    }
                }
            }
            break;
        }

}

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    //this method will be called after picking image from cam or gallery
    if (resultCode== RESULT_OK){

        if (requestCode == IMAGE_PICK_GALLERY_CODE){
            image_uri = data.getData();
            uploadProfileCoverPhoto(image_uri);

        }
        if (requestCode == IMAGE_PICK_CAMERA_CODE) {
            uploadProfileCoverPhoto(image_uri);
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

private void uploadProfileCoverPhoto(final Uri uri){

    String filePathAndName = storagePath+ ""+ profileorCoverPhoto + "_" + user.getUid();
    StorageReference storageReference2nd = storageReference.child(filePathAndName);
    storageReference2nd.putFile(uri)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Task<Uri> uriTask= taskSnapshot.getStorage().getDownloadUrl();
                    while (!uriTask.isSuccessful());
                    Uri downloadUri = uriTask.getResult();
                    // check if image is uploaded or not

                    if (uriTask.isSuccessful()){
                        HashMap<String,Object> results = new HashMap<>();

                        results.put(profileorCoverPhoto,downloadUri.toString());

                        databaseReference.child(user.getUid()).updateChildren(results)
                                .addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {
                                        Toast.makeText(getActivity(), "Image Updated", Toast.LENGTH_SHORT).show();
                                    }
                                })
                                .addOnFailureListener(new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {
                                        Toast.makeText(getActivity(), "Error updating Image", Toast.LENGTH_SHORT).show();

                                    }
                                });

                    } else {
                        Toast.makeText(getActivity(), "some error occured", Toast.LENGTH_SHORT).show();
                    }


                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });


}




private void pickFromCamera() {
    //intent of picking image from device
    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, "Temp Pic");
    values.put(MediaStore.Images.Media.DESCRIPTION, "Temp Description");

    image_uri = getActivity().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

    // intet to start camera

    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
    startActivityForResult(cameraIntent, IMAGE_PICK_CAMERA_CODE);

}

private void pickFromGallery() {

    Intent galleryIntent= new Intent(Intent.ACTION_PICK);
    galleryIntent.setType("image/*");
    startActivityForResult(galleryIntent,IMAGE_PICK_GALLERY_CODE);

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...