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