Android 从firebase聊天应用停用帐户
我正在将firebase数据库用于我的聊天应用程序,当我单击deactivate按钮时,它会从firebase的Authentication部分删除用户,但不会从firebase的database部分删除用户,我的所有用户活动会从database部分检索用户数据。因此,当一个用户停用他的帐户时,它会被删除,但他的帐户对其他用户仍然可见。下面是我的代码Android 从firebase聊天应用停用帐户,android,firebase,firebase-cloud-messaging,firebase-storage,Android,Firebase,Firebase Cloud Messaging,Firebase Storage,我正在将firebase数据库用于我的聊天应用程序,当我单击deactivate按钮时,它会从firebase的Authentication部分删除用户,但不会从firebase的database部分删除用户,我的所有用户活动会从database部分检索用户数据。因此,当一个用户停用他的帐户时,它会被删除,但他的帐户对其他用户仍然可见。下面是我的代码 public class SettingsActivity extends AppCompatActivity{ ImageView i
public class SettingsActivity extends AppCompatActivity{
ImageView ivCamera;
private DatabaseReference mUserDatabase;
private FirebaseUser mCurrentUser;
private CircleImageView mDisplayImage;
private TextView mName;
private TextView mStatus;
private Button mProfileBtn;
private Button mDeactivateBtn;
//private Button mImageBtn;
private static final int GALLERY_PICK = 1;
private StorageReference mImageStorage;
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
mDisplayImage = (CircleImageView) findViewById(R.id.settings_image);
mName = (TextView) findViewById(R.id.settings_name);
mStatus = (TextView) findViewById(R.id.settings_status);
mProfileBtn = (Button) findViewById(R.id.settings_profile_btn);
mDeactivateBtn = (Button) findViewById(R.id.deactivate_btn);
ivCamera = (ImageView) findViewById(R.id.ivCamera);
mProgressDialog = new ProgressDialog(this);
mImageStorage = FirebaseStorage.getInstance().getReference();
mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
String current_uid = mCurrentUser.getUid();
mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(current_uid);
mUserDatabase.keepSynced(true);
mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("name").getValue().toString();
final String image = dataSnapshot.child("image").getValue().toString();
String status = dataSnapshot.child("status").getValue().toString();
String thumb_image = dataSnapshot.child("thumb_image").getValue().toString();
mName.setText(name);
mStatus.setText(status);
if (!image.equals("default")) {
//Picasso.with(SettingsActivity.this).load(image).placeholder(R.drawable.avatar).into(mDisplayImage);
Picasso.with(SettingsActivity.this).load(image).networkPolicy(NetworkPolicy.OFFLINE)
.placeholder(R.drawable.avatar).into(mDisplayImage, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Picasso.with(SettingsActivity.this).load(image).placeholder(R.drawable.avatar).into(mDisplayImage);
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//ivGallery =(ImageView) findViewById(R.id.ivGallery);
//ivGallery.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
//}
//});
mProfileBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name_value = mName.getText().toString();
String status_value = mStatus.getText().toString();
Intent status_Intent = new Intent(SettingsActivity.this, StatusActivity.class);
status_Intent.putExtra("status_value", status_value);
status_Intent.putExtra("name_value", name_value);
startActivity(status_Intent);
}
});
ivCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent galleryIntent = new Intent();
galleryIntent.setType("image/*");
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(galleryIntent, "SELECT IMAGE"), GALLERY_PICK);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GALLERY_PICK && resultCode == RESULT_OK) {
Uri imageUri = data.getData();
CropImage.activity(imageUri).setAspectRatio(1, 1).start(this);
//Toast.makeText(SettingsActivity.this, imageUri, Toast.LENGTH_LONG).show();
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
mProgressDialog = new ProgressDialog(SettingsActivity.this);
mProgressDialog.setTitle("Uploading Image.....");
mProgressDialog.setMessage("Please wait while we upload and process the image.");
mProgressDialog.setCanceledOnTouchOutside(false);
mProgressDialog.show();
Uri resultUri = result.getUri();
File thumb_filePath = new File(resultUri.getPath());
String current_user_id = mCurrentUser.getUid();
Bitmap thumb_bitmap = new Compressor(this)
.setMaxWidth(200)
.setMaxHeight(200)
.setQuality(75)
.compressToBitmap(thumb_filePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
thumb_bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
final byte[] thumb_byte = baos.toByteArray();
StorageReference filePath = mImageStorage.child("profile_images").child(current_user_id + ".jpg");
final StorageReference thumb_filepath = mImageStorage.child("profile_images").child("thumbs").child(current_user_id + ".jpg");
filePath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if (task.isSuccessful()) {
final String download_url = task.getResult().getDownloadUrl().toString();
UploadTask uploadTask = thumb_filepath.putBytes(thumb_byte);
uploadTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> thumb_task) {
String thumb_downloadUrl = thumb_task.getResult().getDownloadUrl().toString();
if (thumb_task.isSuccessful()) {
Map update_hashMap = new HashMap();
update_hashMap.put("image", download_url);
update_hashMap.put("thumb_image", thumb_downloadUrl);
mUserDatabase.updateChildren(update_hashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
mProgressDialog.dismiss();
Toast.makeText(SettingsActivity.this, "Success Uploading.", Toast.LENGTH_LONG).show();
}
}
});
} else {
Toast.makeText(SettingsActivity.this, "Error in Uploading thumbnail.", Toast.LENGTH_LONG).show();
mProgressDialog.dismiss();
}
}
});
} else {
Toast.makeText(SettingsActivity.this, "Error in Uploading.", Toast.LENGTH_LONG).show();
mProgressDialog.dismiss();
}
}
});
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
public static String random() {
Random generator = new Random();
StringBuilder randomStringBuilder = new StringBuilder();
int randomLength = generator.nextInt(10);
char tempChar;
for (int i = 0; i < randomLength; i++) {
tempChar = (char) (generator.nextInt(96) + 32);
randomStringBuilder.append(tempChar);
}
return randomStringBuilder.toString();
}
public void deactivate(View view)
{
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user!=null)
{
mProgressDialog.setTitle("Deactivate Account");
mProgressDialog.setMessage("Deactivating...");
mProgressDialog.show();
mUserDatabase.child(mCurrentUser.getUid()).removeValue();
user.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Account is Deactivated", Toast.LENGTH_LONG).show();
finish();
Intent intent = new Intent(SettingsActivity.this, RegisterActivity.class);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "Account could not be Deactivate", Toast.LENGTH_LONG).show();
}
mProgressDialog.dismiss();
}
});
}
}
}
公共类设置活动扩展了AppCompatingActivity{
图像视图;
私人数据库参考博物馆数据库;
私有FirebaseUser mCurrentUser;
私有CircleImageView mDisplayImage;
私有文本视图mName;
私有文本视图mStatus;
私人按钮mProfileBtn;
专用按钮mDeactivateBtn;
//私有按钮mImageBtn;
专用静态最终整型库_PICK=1;
私有存储参考图像存储;
private ProgressDialog mProgressDialog;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u设置);
mDisplayImage=(CircleImageView)findViewById(R.id.settings\u image);
mName=(TextView)findViewById(R.id.settings\u name);
mStatus=(TextView)findViewById(R.id.settings\u status);
mProfileBtn=(按钮)findviewbyd(R.id.settings\u profile\u btn);
mDeactivateBtn=(按钮)findViewById(R.id.deactivate\u btn);
ivCamera=(ImageView)findViewById(R.id.ivCamera);
mProgressDialog=新建进度对话框(此);
mImageStorage=FirebaseStorage.getInstance().getReference();
mCurrentUser=FirebaseAuth.getInstance().getCurrentUser();
字符串current_uid=mCurrentUser.getUid();
mUserDatabase=FirebaseDatabase.getInstance().getReference().child(“用户”).child(当前uid);
mUserDatabase.keepSynced(true);
mUserDatabase.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
字符串名称=dataSnapshot.child(“名称”).getValue().toString();
最终字符串image=dataSnapshot.child(“image”).getValue().toString();
字符串状态=dataSnapshot.child(“状态”).getValue().toString();
字符串thumb_image=dataSnapshot.child(“thumb_image”).getValue().toString();
mName.setText(名称);
mStatus.setText(状态);
如果(!image.equals(“默认”)){
//毕加索.with(SettingsActivity.this).load(image).placeholder(R.drawable.avatar).into(mDisplayImage);
Picasso.with(SettingsActivity.this).load(image).networkPolicy(networkPolicy.OFFLINE)
.placeholder(R.drawable.avatar).into(mDisplayImage,新回调(){
@凌驾
成功时的公共无效(){
}
@凌驾
公开无效{
毕加索.with(SettingsActivity.this).load(image).placeholder(R.drawable.avatar).into(mDisplayImage);
}
});
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
//ivGallery=(ImageView)findViewById(R.id.ivGallery);
//ivGallery.setOnClickListener(新视图.OnClickListener(){
//@覆盖
//公共void onClick(视图){
//}
//});
mProfileBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
String name_value=mName.getText().toString();
字符串状态_值=mStatus.getText().toString();
意向状态\意向=新意向(设置Activity.this、StatusActivity.class);
status\u Intent.putExtra(“status\u value”,status\u value);
状态\u Intent.putExtra(“名称\u值”,名称\u值);
startActivity(状态和意图);
}
});
ivCamera.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent gallerycontent=新Intent();
GalleryContent.setType(“image/*”);
GalleryContent.setAction(Intent.ACTION\u GET\u CONTENT);
startActivityForResult(Intent.createChooser(GalleryContent,“选择图像”),GALLERY\u PICK;
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==GALLERY\u PICK&&resultCode==RESULT\u OK){
Uri imageUri=data.getData();
activity(imageUri).setAspectRatio(1,1).start(this);
//Toast.makeText(SettingsActivity.this、imageUri、Toast.LENGTH_LONG.show();
}
if(requestCode==CropImage.CROP\u IMAGE\u ACTIVITY\u REQUEST\u CODE){
CropImage.ActivityResult结果=CropImage.getActivityResult(数据);
if(resultCode==RESULT\u OK){
mProgressDialog=新建进度对话框(设置活动。this);
setTitle(“上传图像…”);
setMessage(“请稍候,我们正在上载和处理图像。”);
mProgressDialog.setCanceledOnTouchOutside(false);
mProgressDialog.show();
Uri resultUri=result.getUri();
File thumb_filePath=新文件(resultUri.getPath());
字符串current_user_id=mCurrentUser.getUid();
位图拇指\位图=新的压缩器(此)
.setMaxWidth(200)
.setMaxHeight(200)
s
rootRef.child(node).removeValue();