Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有虚拟方法getToken(Z)Lcom/google/android/gms/tasks/Task;_Android_Firebase_Android Studio_Firebase Storage - Fatal编程技术网

没有虚拟方法getToken(Z)Lcom/google/android/gms/tasks/Task;

没有虚拟方法getToken(Z)Lcom/google/android/gms/tasks/Task;,android,firebase,android-studio,firebase-storage,Android,Firebase,Android Studio,Firebase Storage,在我的android studio应用程序中,我想从手机存储器中选择任何图片,然后将其设置在ImageView(使用毕加索库制作圆形图像),然后我想将图像存储在firebase存储器中。但每次我都会遇到一个错误,这是问题标题中提到的。任何建议都将有助于我进一步开展工作。下面我将分享我的一些代码和快照: 在控制台中 java.lang.NoSuchMethodError: No virtual method getToken(Z)Lcom/google/android/gms/tasks/Tas

在我的android studio应用程序中,我想从手机存储器中选择任何图片,然后将其设置在ImageView(使用毕加索库制作圆形图像),然后我想将图像存储在firebase存储器中。但每次我都会遇到一个错误,这是问题标题中提到的。任何建议都将有助于我进一步开展工作。下面我将分享我的一些代码和快照:

在控制台中


java.lang.NoSuchMethodError: No virtual method getToken(Z)Lcom/google/android/gms/tasks/Task; in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/com.shankhadeep.bloodbankapplication-1kbgca-yu2-dmScRFZxrig==/base.apk!classes3.dex)
        at com.google.firebase.storage.internal.Util.getCurrentAuthToken(com.google.firebase:firebase-storage@@16.0.4:148)
        at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@16.0.4:65)
        at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@16.0.4:57)
        at com.google.firebase.storage.UploadTask.sendWithRetry(com.google.firebase:firebase-storage@@16.0.4:457)
        at com.google.firebase.storage.UploadTask.beginResumableUpload(com.google.firebase:firebase-storage@@16.0.4:257)
        at com.google.firebase.storage.UploadTask.run(com.google.firebase:firebase-storage@@16.0.4:198)
        at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(com.google.firebase:firebase-storage@@16.0.4:1106)
        at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown Source:2)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)
2020-10-18 22:21:29.058 26626-27839/com.shankhadeep.bloodbankapplication V/FA: Activity resumed, time: 1629870396
2020-10-18 22:21:29.161 26626-28212/com.shankhadeep.bloodbankapplication I/Process: Sending signal. PID: 26626 SIG: 9

build.gradle(应用程序级)

编辑个人资料活动

package com.shankhadeep.bloodbankapplication;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.navigation.NavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.shankhadeep.bloodbankapplication.DrawerClasses.Constants;
import com.shankhadeep.bloodbankapplication.DrawerClasses.NavigationAdapter;
import com.shankhadeep.bloodbankapplication.ModelClass.DrawerMenu;
import com.squareup.picasso.Picasso;

import java.io.IOException;
import java.util.ArrayList;
import java.util.UUID;

import de.hdodenhof.circleimageview.CircleImageView;

public class EditProfileActivity extends AppCompatActivity implements View.OnClickListener, PopupMenu.OnMenuItemClickListener,
        AdapterView.OnItemSelectedListener{

    EditText Name,Contact;
    Button Edit,Save;
    CircleImageView profile_image,Header_image;
    TextView Email;
    private static final int REQUEST_CAMERA = 100;
    private static final int PICK_IMAGE_REQUEST = 234;
    ImageView menuImage,nav_button;
    PopupMenu popupMenu;
    Bitmap Img;
    DrawerLayout drawer;
    ListView menu_list;
    NavigationView navigationView;
    ArrayList<DrawerMenu> al_menu_item;
    DrawerMenu drawerMenus;
    NavigationAdapter nv;
    String [] City={"Select Nearest City","Agartala","Aizawl","Banglore","Bhubneshwar","Bhopal","Chandigarh","Chennai","Delhi","Dispur",
            "Dehradun","GandhiNagar","Gangtok","Hyderabad","Imphal","Itanagar","Kolkata","jaipur","kohima","Lucknow","Mumbai",
            "Panji","Patna","Raipur","Ranchi","Shimla","Shillong","Srinagar","Trivanthpuram"};
    String [] Gender={"Select Gender","Male","Female","Others"};
    String [] BloodGroup={"A +ve","A -ve","B +ve","B -ve","AB +ve","AB -ve","O +ve","O -ve"};
    String [] IsDonor={"YES","NO"};

//DataSettingVariables


    Spinner s1;
    Spinner s2;
    Spinner s3;
    Spinner s4;
    String Donor;
    String gender;
    String city;
    String fname;
    String emailId;
    String contact;
    String bloodgrp;
    String password;
    String image;
    String UserId;
    int flag=0;
    String photo="null";

    //Codes for Data Retrival
    FirebaseAuth mAuth;
    SharedPreferences preferences;
    DatabaseReference mRef,saveRef;
//    Firebase mRootRef;
    FirebaseDatabase mFirebaseDatabase;
    ProgressDialog startProgress;

    private static  final  int GALLERY_INTENT=2;
    ProgressDialog progressDialog;
    final long ONE_MEGABYTE = 1024 * 1024;
    Uri downlodUri;
    Uri imageUri;
    private StorageReference mStorage;
    MyReceiver myReciever;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_profile_drawer);

        this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        initView();
        mAuth=FirebaseAuth.getInstance();
        mFirebaseDatabase=FirebaseDatabase.getInstance();
        mStorage= FirebaseStorage.getInstance().getReference();
        menu_list = findViewById(R.id.menu_list);
        menuImage = findViewById(R.id.MenuButton);
        nav_button = findViewById(R.id.NavigationButton);
        myReciever=new MyReceiver(EditProfileActivity.this,EditProfileActivity.this);
        menuImage.setOnClickListener(this);
        nav_button.setOnClickListener(this);
        unclickable();
        progressDialog=new ProgressDialog(this);
        startProgress=new ProgressDialog(this);

        Save.setOnClickListener(this);
        Edit.setOnClickListener(this);
        prepareNavigationMenu();
        IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(myReciever,filter);
        ArrayAdapter adapterCity = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, City);
        adapterCity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s1.setAdapter(adapterCity);
        ArrayAdapter adapterGender = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, Gender);
        adapterGender.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s2.setAdapter(adapterGender);
        ArrayAdapter adapterBlood = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, BloodGroup);
        adapterBlood.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s3.setAdapter(adapterBlood);
        ArrayAdapter adapterDonor = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, IsDonor);
        adapterBlood.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s4.setAdapter(adapterDonor);
        s1.setOnItemSelectedListener(this);
        s2.setOnItemSelectedListener(this);
        s3.setOnItemSelectedListener(this);
        s4.setOnItemSelectedListener(this);
        profile_image.setOnClickListener(this);
        preferences = getSharedPreferences("user", Context.MODE_PRIVATE);

        UserId = preferences.getString("GoogleUid", null);
        //  addData();
        saveRef=FirebaseDatabase.getInstance().getReference().child("Users Details");
        mRef=FirebaseDatabase.getInstance().getReference();
        mRef.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
            @Override
            public void onDataChange(@NonNull com.google.firebase.database.DataSnapshot dataSnapshot) {
                bloodgrp=dataSnapshot.child("Users Details").child(UserId).child("BloodGroup").getValue(String.class);
                city=dataSnapshot.child("Users Details").child(UserId).child("City").getValue(String.class);
                contact=dataSnapshot.child("Users Details").child(UserId).child("Contact").getValue(String.class);
                emailId=dataSnapshot.child("Users Details").child(UserId).child("Email").getValue(String.class);
                gender=dataSnapshot.child("Users Details").child(UserId).child("Gender").getValue(String.class);
                image=dataSnapshot.child("Users Details").child(UserId).child("Image").getValue(String.class);
                Donor=dataSnapshot.child("Users Details").child(UserId).child("IsDonor").getValue(String.class);
                fname=dataSnapshot.child("Users Details").child(UserId).child("Name").getValue(String.class);
                setData();

            }

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

            }


        });

        startProgress.setTitle("Please wait!");
        startProgress.setMessage("Loading...");
        startProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        startProgress.show();
        startProgress.setCancelable(false);
        new Thread(new Runnable() {
            public void run() {
                try {

                    Thread.sleep(5000);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                startProgress.dismiss();
            }
        }).start();
    }

    public void setData()
    {
        if(image.equals(""))
        {
            profile_image.setImageResource(R.drawable.profile);
            Header_image.setImageResource(R.drawable.profile);

        }
        else {
            imageUri = Uri.parse(image);
            Picasso.get().load(imageUri).fit().centerCrop().into(profile_image);
            Picasso.get().load(imageUri).fit().centerCrop().into(Header_image);
        }

        Email.setText(emailId);
        Name.setText(fname);
        Name.setSelection(Name.getText().toString().length());
        Contact.setText(contact.substring(3));
        ArrayAdapter myAdap = (ArrayAdapter) s1.getAdapter(); //cast to an ArrayAdapter
        int spinnerPosition = myAdap.getPosition(city);
//set the default according to value
        s1.setSelection(spinnerPosition);

        ArrayAdapter myAdap1 = (ArrayAdapter) s2.getAdapter(); //cast to an ArrayAdapter
        int spinnerPosition1 = myAdap1.getPosition(gender);
//set the default according to value
        s2.setSelection(spinnerPosition1);
        ArrayAdapter myAdap2 = (ArrayAdapter) s3.getAdapter(); //cast to an ArrayAdapter
        int spinnerPosition2 = myAdap2.getPosition(bloodgrp);
//set the default according to value
        s3.setSelection(spinnerPosition2);
//        if(Donor.equals("Yes")) {
//            ArrayAdapter myAdap3 = (ArrayAdapter) s4.getAdapter(); //cast to an ArrayAdapter
//            int spinnerPosition3 = myAdap3.getPosition(Donor);
////set the default according to value
//            s4.setSelection(spinnerPosition3);
////
////
//        }

    }

    public void initView()
    {
        Name=findViewById(R.id.txtName);
        Email=findViewById(R.id.txtEmail);
        Contact=findViewById(R.id.txtContact);
        Edit=findViewById(R.id.btnEdit);
        Save=findViewById(R.id.btnSave);
        profile_image=findViewById(R.id.profile_image);
        s1=findViewById(R.id.SimpleSpinnerCountry);
        s2=findViewById( R.id.SimpleSpinnerGender);
        s3=findViewById(R.id.SimpleSpinnerBloodGrp);
        s4=findViewById(R.id.SimpleSpinnerDonor);
        Header_image=findViewById(R.id.header_profile);


    }

    public void setClickable()
    {
        Name.setEnabled(true);
        Email.setEnabled(true);
        Contact.setEnabled(true);
        s1.setEnabled(true);
        s2.setEnabled(true);
        s3.setEnabled(true);
        s4.setEnabled(true);
        profile_image.setEnabled(true);


    }

    public void unclickable()
    {
        Name.setEnabled(false);
        Email.setEnabled(false);
        Contact.setEnabled(false);
        s1.setEnabled(false);
        s2.setEnabled(false);
        s3.setEnabled(false);
        s4.setEnabled(false);
        profile_image.setEnabled(false);
    }

    @Override
    public void onClick(View v) {

        switch(v.getId())
        {
            case R.id.btnEdit:
                Save.setVisibility(View.VISIBLE);
                setClickable();
                break;
            case R.id.MenuButton:
                popupMenu=new PopupMenu(EditProfileActivity.this,v);
                popupMenu.setOnMenuItemClickListener(this);
                MenuInflater inflater=popupMenu.getMenuInflater();
                inflater.inflate(R.menu.menu,popupMenu.getMenu());
                popupMenu.show();
                break;

            case R.id.NavigationButton:
//                InputMethodManager inputManager = (InputMethodManager)
//                        getSystemService(Context.INPUT_METHOD_SERVICE);
//                inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
//                        InputMethodManager.HIDE_NOT_ALWAYS);
                if (drawer.isDrawerOpen(GravityCompat.START)) {
                    drawer.closeDrawer(GravityCompat.START);
                } else
                    drawer.openDrawer(GravityCompat.START);
                break;

            case R.id.btnSave :
                SaveFinalData();

                break;

            case R.id.profile_image:  ImageSetup();
                break;


        }

    }

    public  void ImageSetup()
    {
        Intent intent=new Intent(Intent.ACTION_GET_CONTENT );
        intent.setType("image/*");
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==PICK_IMAGE_REQUEST && resultCode==RESULT_OK && data!=null && data.getData()!=null)
        {
            progressDialog.setMessage(" Image Uploading...");
            progressDialog.show();

            imageUri=data.getData();
            final StorageReference filepath=mStorage.child("image/" + UUID.randomUUID().toString()).child(imageUri.getLastPathSegment());
            filepath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            downlodUri = uri;
                            image= downlodUri.toString();
                            try {
                                Bitmap bitmap =  MediaStore.Images.Media.getBitmap(getContentResolver(), downlodUri);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            Picasso.get().load(downlodUri).fit().centerCrop().into(profile_image);
                            Toast.makeText(EditProfileActivity.this, "Upload Done", Toast.LENGTH_LONG).show();
                            progressDialog.dismiss();

                        }
                    });


                }
            });
        }
    }

    public  void SaveFinalData()
    {
        if(Name.getText().toString().isEmpty())
        {
            Name.setHint("Please Enter Your Name ");
            Name.setHintTextColor(Color.RED);
        }
        else if( Contact.getText().toString().isEmpty())
        {
            Contact.setHint("Plese Enter Your Contact No");
            Name.setHintTextColor(Color.RED);
        }
        else if(Name.getText().toString().isEmpty() && Contact.getText().toString().isEmpty() )
        {
            Name.setHint("Please Enter Your Name ");
            Name.setHintTextColor(Color.RED);
            Contact.setHint("Plese Enter Your Contact No");
            Name.setHintTextColor(Color.RED);
        } else if (Contact.getText().toString().length()!=10)
        {
            Toast.makeText(EditProfileActivity.this, "Contact No is not in correct format", Toast.LENGTH_SHORT).show();
        }
        else {
            DatabaseReference currenet_userDb = saveRef.child(UserId);
            currenet_userDb.child("Name").setValue(Name.getText().toString());
            currenet_userDb.child("Contact").setValue("+91" + Contact.getText().toString());
            currenet_userDb.child("City").setValue(city);
            currenet_userDb.child("Gender").setValue(gender);
            currenet_userDb.child("BloodGroup").setValue(bloodgrp);
            currenet_userDb.child("IsDonor").setValue(Donor);
            currenet_userDb.child("Image").setValue(image);
            unclickable();
            Save.setVisibility(View.INVISIBLE);
        }

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        switch (parent.getId()) {
            case R.id.SimpleSpinnerCountry:
                city = (String) parent.getItemAtPosition(position);
                //   Toast.makeText(getApplicationContext(), "You have Selected "+city, Toast.LENGTH_LONG).show();
                break;
            case R.id.SimpleSpinnerGender:
                gender = (String) parent.getItemAtPosition(position);
                //  Toast.makeText(getApplicationContext(), "You have Selected "+gender, Toast.LENGTH_LONG).show();
                break;
            case R.id.SimpleSpinnerBloodGrp:
                bloodgrp = (String) parent.getItemAtPosition(position);
                //   Toast.makeText(getApplicationContext(), "You have Selected "+gender, Toast.LENGTH_LONG).show();
                break;
            case R.id.SimpleSpinnerDonor:
                Donor=(String)parent.getItemAtPosition(position);
                break;
        }

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch(item.getItemId())
        {

            case R.id.Logout:
                //FirebaseAuth.getInstance().signOut();
                SignOut();
                finish();
                return  true;

            default:return  false;
        }

    }

    private  void SignOut()
    {
        SharedPreferences pref = getSharedPreferences("user", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.clear();
        editor.remove("GoogleUid");
        editor.commit();
        Intent intent=new Intent(EditProfileActivity.this,SignIn.class);
        startActivity(intent);
        finish();


    }

    private void prepareNavigationMenu() {

        drawer = (DrawerLayout) findViewById(R.id.drawer_layout);


        al_menu_item = Constants.prepareSideMenu(this);

        navigationView = (NavigationView) findViewById(R.id.nav_view);


        nv = new NavigationAdapter(this, al_menu_item);
        //stopping  point
        menu_list.setAdapter(nv);


        //Actually we are picking the List_item name from here
        menu_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                if (drawer.isDrawerOpen(GravityCompat.START)) {
                    drawer.closeDrawer(GravityCompat.START);
                }

                //OpenActivity method is called when user click on any List_item of the Navigation Drawer then the User
                //Will be navigated to any other activity...
                new Constants(EditProfileActivity.this, EditProfileActivity.this).openActivity(al_menu_item.get(position).getMenu_name());
                Toast.makeText(getApplicationContext(), al_menu_item.get(position).getMenu_name(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
            finish();
        }
    }
}


包com.shankhadeep.bloodbank应用程序;
导入androidx.annotation.NonNull;
导入androidx.annotation.Nullable;
导入androidx.appcompat.app.appcompat活动;
导入androidx.core.view.GravityCompat;
导入androidx.drawerlayout.widget.drawerlayout;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.content.SharedReferences;
导入android.graphics.Bitmap;
导入android.graphics.Color;
导入android.net.ConnectivityManager;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.MediaStore;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.WindowManager;
导入android.view.inputmethod.InputMethodManager;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.PopupMenu;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.gms.tasks.OnSuccessListener;
导入com.google.android.material.navigation.NavigationView;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.storage.firebase存储;
导入com.google.firebase.storage.StorageReference;
导入com.google.firebase.storage.UploadTask;
导入com.shankhadeep.bloodbankapplication.drawercasses.Constants;
导入com.shankhadeep.bloodbankapplication.DrawerClasses.NavigationAdapter;
导入com.shankhadeep.bloodbankapplication.ModelClass.DrawerMenu;
导入com.squareup.picasso.picasso;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.UUID;
导入de.hdodenhof.circleimageview.circleimageview;
公共类EditProfileActivity扩展了AppCompatActivity实现了View.OnClickListener、PopupMenu.OnMenuItemClickListener、,
AdapterView.OnItemSelectedListener{
编辑文本名称、联系人;
按钮编辑,保存;
CircleImageView剖面图、标题图;
TextView电子邮件;
专用静态最终int请求\u摄像机=100;
私有静态最终整数选取图像请求=234;
图像视图菜单图像,导航按钮;
弹出菜单弹出菜单;
位图图像;
抽屉式抽屉;
列表视图菜单列表;
导航视图导航视图;
ArrayList al_菜单项;
抽屉门;
导航适配器;
字符串[]城市={“选择最近的城市”、“阿加塔拉”、“艾扎沃”、“班格罗尔”、“布布布内斯瓦尔”、“博帕尔”、“昌迪加尔”、“钦奈”、“德里”、“迪斯普尔”,
“德拉敦”、“甘迪纳格尔”、“甘托克”、“海得拉巴”、“英帕尔”、“伊塔纳格尔”、“加尔各答”、“斋浦尔”、“科希马”、“勒克瑙”、“孟买”,
“Panji”、“Patna”、“Raipur”、“Ranchi”、“Shimla”、“Shillong”、“Srinagar”、“Trivanthpuram”};
字符串[]性别={“选择性别”、“男性”、“女性”、“其他”};
String[]BloodGroup={“A+ve”、“A-ve”、“B+ve”、“B-ve”、“AB+ve”、“AB-ve”、“O+ve”、“O-ve”};
字符串[]IsDonor={“是”、“否”};
//数据设置变量
旋转器s1;
旋转器s2;
旋转器s3;
旋转器s4;
弦供体;
字符串性别;
字符串城市;
字符串fname;
字符串emailId;
弦接触;
线状血球;
字符串密码;
字符串图像;
字符串用户标识;
int标志=0;
字符串photo=“null”;
//数据检索代码
FirebaseAuth mAuth;
共享参考偏好;
数据库参考mRef,saveRef;
//Firebase mRootRef;
FirebaseDatabase mFirebaseDatabase;
ProgressDialog startProgress;
专用静态最终int画廊\u意图=2;
进行对话进行对话;
最终长1兆字节=1024*1024;
Uri downlodUri;
Uri-imageUri;
私有存储器;参考存储器;
我的接受者;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.edit\u profile\u drawer);
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u输入\状态\隐藏);
initView();
mAuth=FirebaseAuth.getInstance();
mFirebaseDatabase=FirebaseDatabase.getInstance();
mStorage=FirebaseStorage.getInstance().getReference();
菜单列表=findviewbyd(R.id.menu列表);
menuImage=findviewbyd(R.id.MenuButton);
导航按钮=findViewById(R.id.NavigationButton);
MyReceiver=新的MyReceiver(EditProfileActivity.this,EditProfileActivity.this);
menuImage.setOnClickListener(这个);
导航按钮。设置单击侦听器(此);
不可链接();
progressDialog=新建progressDialog(此);
startProgress=新建进度对话框(此对话框);
Save.setOnClickListener(这个);
Edit.setOnClickListener(这个);
prepareNavigationMenu();
IntentFilter筛选器=新的IntentFilter(ConnectionManager.CONNECTIVITY_操作);
寄存器接收器(MyReceiver,过滤器);
ArrayAdapter adapterCity=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u项,城市);
adapterCity.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u it
package com.shankhadeep.bloodbankapplication;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.navigation.NavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.shankhadeep.bloodbankapplication.DrawerClasses.Constants;
import com.shankhadeep.bloodbankapplication.DrawerClasses.NavigationAdapter;
import com.shankhadeep.bloodbankapplication.ModelClass.DrawerMenu;
import com.squareup.picasso.Picasso;

import java.io.IOException;
import java.util.ArrayList;
import java.util.UUID;

import de.hdodenhof.circleimageview.CircleImageView;

public class EditProfileActivity extends AppCompatActivity implements View.OnClickListener, PopupMenu.OnMenuItemClickListener,
        AdapterView.OnItemSelectedListener{

    EditText Name,Contact;
    Button Edit,Save;
    CircleImageView profile_image,Header_image;
    TextView Email;
    private static final int REQUEST_CAMERA = 100;
    private static final int PICK_IMAGE_REQUEST = 234;
    ImageView menuImage,nav_button;
    PopupMenu popupMenu;
    Bitmap Img;
    DrawerLayout drawer;
    ListView menu_list;
    NavigationView navigationView;
    ArrayList<DrawerMenu> al_menu_item;
    DrawerMenu drawerMenus;
    NavigationAdapter nv;
    String [] City={"Select Nearest City","Agartala","Aizawl","Banglore","Bhubneshwar","Bhopal","Chandigarh","Chennai","Delhi","Dispur",
            "Dehradun","GandhiNagar","Gangtok","Hyderabad","Imphal","Itanagar","Kolkata","jaipur","kohima","Lucknow","Mumbai",
            "Panji","Patna","Raipur","Ranchi","Shimla","Shillong","Srinagar","Trivanthpuram"};
    String [] Gender={"Select Gender","Male","Female","Others"};
    String [] BloodGroup={"A +ve","A -ve","B +ve","B -ve","AB +ve","AB -ve","O +ve","O -ve"};
    String [] IsDonor={"YES","NO"};

//DataSettingVariables


    Spinner s1;
    Spinner s2;
    Spinner s3;
    Spinner s4;
    String Donor;
    String gender;
    String city;
    String fname;
    String emailId;
    String contact;
    String bloodgrp;
    String password;
    String image;
    String UserId;
    int flag=0;
    String photo="null";

    //Codes for Data Retrival
    FirebaseAuth mAuth;
    SharedPreferences preferences;
    DatabaseReference mRef,saveRef;
//    Firebase mRootRef;
    FirebaseDatabase mFirebaseDatabase;
    ProgressDialog startProgress;

    private static  final  int GALLERY_INTENT=2;
    ProgressDialog progressDialog;
    final long ONE_MEGABYTE = 1024 * 1024;
    Uri downlodUri;
    Uri imageUri;
    private StorageReference mStorage;
    MyReceiver myReciever;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_profile_drawer);

        this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        initView();
        mAuth=FirebaseAuth.getInstance();
        mFirebaseDatabase=FirebaseDatabase.getInstance();
        mStorage= FirebaseStorage.getInstance().getReference();
        menu_list = findViewById(R.id.menu_list);
        menuImage = findViewById(R.id.MenuButton);
        nav_button = findViewById(R.id.NavigationButton);
        myReciever=new MyReceiver(EditProfileActivity.this,EditProfileActivity.this);
        menuImage.setOnClickListener(this);
        nav_button.setOnClickListener(this);
        unclickable();
        progressDialog=new ProgressDialog(this);
        startProgress=new ProgressDialog(this);

        Save.setOnClickListener(this);
        Edit.setOnClickListener(this);
        prepareNavigationMenu();
        IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(myReciever,filter);
        ArrayAdapter adapterCity = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, City);
        adapterCity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s1.setAdapter(adapterCity);
        ArrayAdapter adapterGender = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, Gender);
        adapterGender.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s2.setAdapter(adapterGender);
        ArrayAdapter adapterBlood = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, BloodGroup);
        adapterBlood.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s3.setAdapter(adapterBlood);
        ArrayAdapter adapterDonor = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, IsDonor);
        adapterBlood.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s4.setAdapter(adapterDonor);
        s1.setOnItemSelectedListener(this);
        s2.setOnItemSelectedListener(this);
        s3.setOnItemSelectedListener(this);
        s4.setOnItemSelectedListener(this);
        profile_image.setOnClickListener(this);
        preferences = getSharedPreferences("user", Context.MODE_PRIVATE);

        UserId = preferences.getString("GoogleUid", null);
        //  addData();
        saveRef=FirebaseDatabase.getInstance().getReference().child("Users Details");
        mRef=FirebaseDatabase.getInstance().getReference();
        mRef.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
            @Override
            public void onDataChange(@NonNull com.google.firebase.database.DataSnapshot dataSnapshot) {
                bloodgrp=dataSnapshot.child("Users Details").child(UserId).child("BloodGroup").getValue(String.class);
                city=dataSnapshot.child("Users Details").child(UserId).child("City").getValue(String.class);
                contact=dataSnapshot.child("Users Details").child(UserId).child("Contact").getValue(String.class);
                emailId=dataSnapshot.child("Users Details").child(UserId).child("Email").getValue(String.class);
                gender=dataSnapshot.child("Users Details").child(UserId).child("Gender").getValue(String.class);
                image=dataSnapshot.child("Users Details").child(UserId).child("Image").getValue(String.class);
                Donor=dataSnapshot.child("Users Details").child(UserId).child("IsDonor").getValue(String.class);
                fname=dataSnapshot.child("Users Details").child(UserId).child("Name").getValue(String.class);
                setData();

            }

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

            }


        });

        startProgress.setTitle("Please wait!");
        startProgress.setMessage("Loading...");
        startProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        startProgress.show();
        startProgress.setCancelable(false);
        new Thread(new Runnable() {
            public void run() {
                try {

                    Thread.sleep(5000);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                startProgress.dismiss();
            }
        }).start();
    }

    public void setData()
    {
        if(image.equals(""))
        {
            profile_image.setImageResource(R.drawable.profile);
            Header_image.setImageResource(R.drawable.profile);

        }
        else {
            imageUri = Uri.parse(image);
            Picasso.get().load(imageUri).fit().centerCrop().into(profile_image);
            Picasso.get().load(imageUri).fit().centerCrop().into(Header_image);
        }

        Email.setText(emailId);
        Name.setText(fname);
        Name.setSelection(Name.getText().toString().length());
        Contact.setText(contact.substring(3));
        ArrayAdapter myAdap = (ArrayAdapter) s1.getAdapter(); //cast to an ArrayAdapter
        int spinnerPosition = myAdap.getPosition(city);
//set the default according to value
        s1.setSelection(spinnerPosition);

        ArrayAdapter myAdap1 = (ArrayAdapter) s2.getAdapter(); //cast to an ArrayAdapter
        int spinnerPosition1 = myAdap1.getPosition(gender);
//set the default according to value
        s2.setSelection(spinnerPosition1);
        ArrayAdapter myAdap2 = (ArrayAdapter) s3.getAdapter(); //cast to an ArrayAdapter
        int spinnerPosition2 = myAdap2.getPosition(bloodgrp);
//set the default according to value
        s3.setSelection(spinnerPosition2);
//        if(Donor.equals("Yes")) {
//            ArrayAdapter myAdap3 = (ArrayAdapter) s4.getAdapter(); //cast to an ArrayAdapter
//            int spinnerPosition3 = myAdap3.getPosition(Donor);
////set the default according to value
//            s4.setSelection(spinnerPosition3);
////
////
//        }

    }

    public void initView()
    {
        Name=findViewById(R.id.txtName);
        Email=findViewById(R.id.txtEmail);
        Contact=findViewById(R.id.txtContact);
        Edit=findViewById(R.id.btnEdit);
        Save=findViewById(R.id.btnSave);
        profile_image=findViewById(R.id.profile_image);
        s1=findViewById(R.id.SimpleSpinnerCountry);
        s2=findViewById( R.id.SimpleSpinnerGender);
        s3=findViewById(R.id.SimpleSpinnerBloodGrp);
        s4=findViewById(R.id.SimpleSpinnerDonor);
        Header_image=findViewById(R.id.header_profile);


    }

    public void setClickable()
    {
        Name.setEnabled(true);
        Email.setEnabled(true);
        Contact.setEnabled(true);
        s1.setEnabled(true);
        s2.setEnabled(true);
        s3.setEnabled(true);
        s4.setEnabled(true);
        profile_image.setEnabled(true);


    }

    public void unclickable()
    {
        Name.setEnabled(false);
        Email.setEnabled(false);
        Contact.setEnabled(false);
        s1.setEnabled(false);
        s2.setEnabled(false);
        s3.setEnabled(false);
        s4.setEnabled(false);
        profile_image.setEnabled(false);
    }

    @Override
    public void onClick(View v) {

        switch(v.getId())
        {
            case R.id.btnEdit:
                Save.setVisibility(View.VISIBLE);
                setClickable();
                break;
            case R.id.MenuButton:
                popupMenu=new PopupMenu(EditProfileActivity.this,v);
                popupMenu.setOnMenuItemClickListener(this);
                MenuInflater inflater=popupMenu.getMenuInflater();
                inflater.inflate(R.menu.menu,popupMenu.getMenu());
                popupMenu.show();
                break;

            case R.id.NavigationButton:
//                InputMethodManager inputManager = (InputMethodManager)
//                        getSystemService(Context.INPUT_METHOD_SERVICE);
//                inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
//                        InputMethodManager.HIDE_NOT_ALWAYS);
                if (drawer.isDrawerOpen(GravityCompat.START)) {
                    drawer.closeDrawer(GravityCompat.START);
                } else
                    drawer.openDrawer(GravityCompat.START);
                break;

            case R.id.btnSave :
                SaveFinalData();

                break;

            case R.id.profile_image:  ImageSetup();
                break;


        }

    }

    public  void ImageSetup()
    {
        Intent intent=new Intent(Intent.ACTION_GET_CONTENT );
        intent.setType("image/*");
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==PICK_IMAGE_REQUEST && resultCode==RESULT_OK && data!=null && data.getData()!=null)
        {
            progressDialog.setMessage(" Image Uploading...");
            progressDialog.show();

            imageUri=data.getData();
            final StorageReference filepath=mStorage.child("image/" + UUID.randomUUID().toString()).child(imageUri.getLastPathSegment());
            filepath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            downlodUri = uri;
                            image= downlodUri.toString();
                            try {
                                Bitmap bitmap =  MediaStore.Images.Media.getBitmap(getContentResolver(), downlodUri);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            Picasso.get().load(downlodUri).fit().centerCrop().into(profile_image);
                            Toast.makeText(EditProfileActivity.this, "Upload Done", Toast.LENGTH_LONG).show();
                            progressDialog.dismiss();

                        }
                    });


                }
            });
        }
    }

    public  void SaveFinalData()
    {
        if(Name.getText().toString().isEmpty())
        {
            Name.setHint("Please Enter Your Name ");
            Name.setHintTextColor(Color.RED);
        }
        else if( Contact.getText().toString().isEmpty())
        {
            Contact.setHint("Plese Enter Your Contact No");
            Name.setHintTextColor(Color.RED);
        }
        else if(Name.getText().toString().isEmpty() && Contact.getText().toString().isEmpty() )
        {
            Name.setHint("Please Enter Your Name ");
            Name.setHintTextColor(Color.RED);
            Contact.setHint("Plese Enter Your Contact No");
            Name.setHintTextColor(Color.RED);
        } else if (Contact.getText().toString().length()!=10)
        {
            Toast.makeText(EditProfileActivity.this, "Contact No is not in correct format", Toast.LENGTH_SHORT).show();
        }
        else {
            DatabaseReference currenet_userDb = saveRef.child(UserId);
            currenet_userDb.child("Name").setValue(Name.getText().toString());
            currenet_userDb.child("Contact").setValue("+91" + Contact.getText().toString());
            currenet_userDb.child("City").setValue(city);
            currenet_userDb.child("Gender").setValue(gender);
            currenet_userDb.child("BloodGroup").setValue(bloodgrp);
            currenet_userDb.child("IsDonor").setValue(Donor);
            currenet_userDb.child("Image").setValue(image);
            unclickable();
            Save.setVisibility(View.INVISIBLE);
        }

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        switch (parent.getId()) {
            case R.id.SimpleSpinnerCountry:
                city = (String) parent.getItemAtPosition(position);
                //   Toast.makeText(getApplicationContext(), "You have Selected "+city, Toast.LENGTH_LONG).show();
                break;
            case R.id.SimpleSpinnerGender:
                gender = (String) parent.getItemAtPosition(position);
                //  Toast.makeText(getApplicationContext(), "You have Selected "+gender, Toast.LENGTH_LONG).show();
                break;
            case R.id.SimpleSpinnerBloodGrp:
                bloodgrp = (String) parent.getItemAtPosition(position);
                //   Toast.makeText(getApplicationContext(), "You have Selected "+gender, Toast.LENGTH_LONG).show();
                break;
            case R.id.SimpleSpinnerDonor:
                Donor=(String)parent.getItemAtPosition(position);
                break;
        }

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch(item.getItemId())
        {

            case R.id.Logout:
                //FirebaseAuth.getInstance().signOut();
                SignOut();
                finish();
                return  true;

            default:return  false;
        }

    }

    private  void SignOut()
    {
        SharedPreferences pref = getSharedPreferences("user", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.clear();
        editor.remove("GoogleUid");
        editor.commit();
        Intent intent=new Intent(EditProfileActivity.this,SignIn.class);
        startActivity(intent);
        finish();


    }

    private void prepareNavigationMenu() {

        drawer = (DrawerLayout) findViewById(R.id.drawer_layout);


        al_menu_item = Constants.prepareSideMenu(this);

        navigationView = (NavigationView) findViewById(R.id.nav_view);


        nv = new NavigationAdapter(this, al_menu_item);
        //stopping  point
        menu_list.setAdapter(nv);


        //Actually we are picking the List_item name from here
        menu_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                if (drawer.isDrawerOpen(GravityCompat.START)) {
                    drawer.closeDrawer(GravityCompat.START);
                }

                //OpenActivity method is called when user click on any List_item of the Navigation Drawer then the User
                //Will be navigated to any other activity...
                new Constants(EditProfileActivity.this, EditProfileActivity.this).openActivity(al_menu_item.get(position).getMenu_name());
                Toast.makeText(getApplicationContext(), al_menu_item.get(position).getMenu_name(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
            finish();
        }
    }
}


implementation 'com.firebase:firebase-client-android:2.3.1'