Firebase Android App keeps crashing after a certain time
I have been coding in Android Studio using Firebase as my Database. The app works fine for a certain period of time, but crashes later on.
PROJECT LEVEL GRADLE FILE
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
APP LEVEL GRADLE FILE
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.admin.firstapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:support-annotations:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'de.hdodenhof:circleimageview:2.2.0'
api 'com.theartofdev.edmodo:android-image-cropper:2.7.+'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-crash:16.0.1'
implementation 'com.firebaseui:firebase-ui-storage:4.1.0'
implementation 'com.firebaseui:firebase-ui-database:4.1.0'
implementation 'com.github.jakebonk:NotifyMe:1.0.0'
implementation 'com.github.MAXDeliveryNG:slideview:1.1.0'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
ERROR
E/AndroidRuntime: FATAL EXCEPTION: TokenRefresher
Process: com.example.admin.firstapp, PID: 13467
java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firestapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
E/UncaughtException: java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firstapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
The app crashes after about 15/20 mins of inactivity. It doesn't go to fragments or activities which involve firebase.
CODE THAT PRODUCES THE ERROR
public class ViewBankProfile extends AppCompatActivity {
private ImageButton editPic, cancel, confirmupdate;
private EditText bankname, description, contact, website;
private TextView bankusername;
private DatabaseReference mDatabase;
private String username;
private Button update;
private CircleImageView bankProfileImage;
private static final int GalleryPicK = 1;
private StorageReference bankProfileImageRef;
private ProgressDialog loadingbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_bank_profile);
bankusername = findViewById(R.id.view_bank_user_name);
bankname = findViewById(R.id.edit_bank_name);
description = findViewById(R.id.edit_bio);
website = findViewById(R.id.edit_website);
contact = findViewById(R.id.edit_bank_contact_no);
cancel = findViewById(R.id.cancel_edit_bank_profile);
confirmupdate = findViewById(R.id.confirm_edit_bank_profile);
update = findViewById(R.id.update_bank_profile);
bankProfileImage = findViewById(R.id.view_profile_pic);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImageRef = FirebaseStorage.getInstance().getReference().child("Bank Images");
loadingbar = new ProgressDialog(this);
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
username = sharedPreferences.getString("UserName", "UserName");
if (!username.equals("UserName")) {
mDatabase = FirebaseDatabase.getInstance().getReference().child("Banks").child(username);
}
Toolbar profileToolbar = findViewById(R.id.profile_toolbar);
profileToolbar.setTitle("");
setSupportActionBar(profileToolbar);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
editPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
confirmupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
final SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
if (requestCode == GalleryPicK && resultCode == RESULT_OK && data != null) {
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
final CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode==RESULT_OK)
{
loadingbar.setTitle("Uploading");
loadingbar.setMessage("Please wait while your profile Image is Uploading...");
loadingbar.show();
final Uri resultUri = result.getUri();
final StorageReference filepath = bankProfileImageRef.child(username + ".jpg");
filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()){
Toast.makeText(getApplication(),"Profile Image Uploaded",Toast.LENGTH_SHORT).show();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), result.getUri());
String path = saveToInternalStorage(bitmap);
loadImageFromStorage(path);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Image",path);
save.apply();
} catch (IOException e) {
e.printStackTrace();
}
loadingbar.dismiss();
}
else
{
String message = task.getException().toString();
Toast.makeText(getApplication(),"Error: "+message,Toast.LENGTH_LONG).show();
loadingbar.dismiss();
}
}
});
}
}
}
@Override
protected void onStart() {
super.onStart();
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = sharedPreferences.getString("Name", "Name");
String username = sharedPreferences.getString("UserName", "UserName");
String con = sharedPreferences.getString("Contact", "Contact");
String des = sharedPreferences.getString("Description", "Enter Information about the bank");
String web = sharedPreferences.getString("Website", "Website");
String path = sharedPreferences.getString("Image","N/A");
if(!path.equals("N/A"))
{
loadImageFromStorage(path);
}
bankusername.setText(username);
bankname.setText(name);
description.setText(des);
website.setText(web);
contact.setText(con);
}
private void updatebankprofile() {
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = bankname.getText().toString().trim();
String con = contact.getText().toString().trim();
String des = description.getText().toString().trim();
String web = website.getText().toString().trim();
HashMap<String, Object> update = new HashMap<>();
update.put("Name", name);
update.put("Contact", con);
update.put("Description", des);
update.put("Website", web);
mDatabase.updateChildren(update);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Name", name);
save.putString("Description", des);
save.putString("Contact", con);
save.putString("Website",web);
save.apply();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
private String saveToInternalStorage(Bitmap bitmap){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,"profile.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return directory.getAbsolutePath();
}
private void loadImageFromStorage(String path)
{
try {
File f=new File(path, "profile.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
CircleImageView img=(CircleImageView) findViewById(R.id.view_profile_pic);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
I have added one java code, however this error is produced wherever firebase Database is involved.
java
|
show 2 more comments
I have been coding in Android Studio using Firebase as my Database. The app works fine for a certain period of time, but crashes later on.
PROJECT LEVEL GRADLE FILE
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
APP LEVEL GRADLE FILE
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.admin.firstapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:support-annotations:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'de.hdodenhof:circleimageview:2.2.0'
api 'com.theartofdev.edmodo:android-image-cropper:2.7.+'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-crash:16.0.1'
implementation 'com.firebaseui:firebase-ui-storage:4.1.0'
implementation 'com.firebaseui:firebase-ui-database:4.1.0'
implementation 'com.github.jakebonk:NotifyMe:1.0.0'
implementation 'com.github.MAXDeliveryNG:slideview:1.1.0'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
ERROR
E/AndroidRuntime: FATAL EXCEPTION: TokenRefresher
Process: com.example.admin.firstapp, PID: 13467
java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firestapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
E/UncaughtException: java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firstapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
The app crashes after about 15/20 mins of inactivity. It doesn't go to fragments or activities which involve firebase.
CODE THAT PRODUCES THE ERROR
public class ViewBankProfile extends AppCompatActivity {
private ImageButton editPic, cancel, confirmupdate;
private EditText bankname, description, contact, website;
private TextView bankusername;
private DatabaseReference mDatabase;
private String username;
private Button update;
private CircleImageView bankProfileImage;
private static final int GalleryPicK = 1;
private StorageReference bankProfileImageRef;
private ProgressDialog loadingbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_bank_profile);
bankusername = findViewById(R.id.view_bank_user_name);
bankname = findViewById(R.id.edit_bank_name);
description = findViewById(R.id.edit_bio);
website = findViewById(R.id.edit_website);
contact = findViewById(R.id.edit_bank_contact_no);
cancel = findViewById(R.id.cancel_edit_bank_profile);
confirmupdate = findViewById(R.id.confirm_edit_bank_profile);
update = findViewById(R.id.update_bank_profile);
bankProfileImage = findViewById(R.id.view_profile_pic);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImageRef = FirebaseStorage.getInstance().getReference().child("Bank Images");
loadingbar = new ProgressDialog(this);
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
username = sharedPreferences.getString("UserName", "UserName");
if (!username.equals("UserName")) {
mDatabase = FirebaseDatabase.getInstance().getReference().child("Banks").child(username);
}
Toolbar profileToolbar = findViewById(R.id.profile_toolbar);
profileToolbar.setTitle("");
setSupportActionBar(profileToolbar);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
editPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
confirmupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
final SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
if (requestCode == GalleryPicK && resultCode == RESULT_OK && data != null) {
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
final CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode==RESULT_OK)
{
loadingbar.setTitle("Uploading");
loadingbar.setMessage("Please wait while your profile Image is Uploading...");
loadingbar.show();
final Uri resultUri = result.getUri();
final StorageReference filepath = bankProfileImageRef.child(username + ".jpg");
filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()){
Toast.makeText(getApplication(),"Profile Image Uploaded",Toast.LENGTH_SHORT).show();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), result.getUri());
String path = saveToInternalStorage(bitmap);
loadImageFromStorage(path);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Image",path);
save.apply();
} catch (IOException e) {
e.printStackTrace();
}
loadingbar.dismiss();
}
else
{
String message = task.getException().toString();
Toast.makeText(getApplication(),"Error: "+message,Toast.LENGTH_LONG).show();
loadingbar.dismiss();
}
}
});
}
}
}
@Override
protected void onStart() {
super.onStart();
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = sharedPreferences.getString("Name", "Name");
String username = sharedPreferences.getString("UserName", "UserName");
String con = sharedPreferences.getString("Contact", "Contact");
String des = sharedPreferences.getString("Description", "Enter Information about the bank");
String web = sharedPreferences.getString("Website", "Website");
String path = sharedPreferences.getString("Image","N/A");
if(!path.equals("N/A"))
{
loadImageFromStorage(path);
}
bankusername.setText(username);
bankname.setText(name);
description.setText(des);
website.setText(web);
contact.setText(con);
}
private void updatebankprofile() {
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = bankname.getText().toString().trim();
String con = contact.getText().toString().trim();
String des = description.getText().toString().trim();
String web = website.getText().toString().trim();
HashMap<String, Object> update = new HashMap<>();
update.put("Name", name);
update.put("Contact", con);
update.put("Description", des);
update.put("Website", web);
mDatabase.updateChildren(update);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Name", name);
save.putString("Description", des);
save.putString("Contact", con);
save.putString("Website",web);
save.apply();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
private String saveToInternalStorage(Bitmap bitmap){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,"profile.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return directory.getAbsolutePath();
}
private void loadImageFromStorage(String path)
{
try {
File f=new File(path, "profile.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
CircleImageView img=(CircleImageView) findViewById(R.id.view_profile_pic);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
I have added one java code, however this error is produced wherever firebase Database is involved.
java
are you using flutter
– Ashish Kudale
Jan 3 at 6:46
'com.google.firebase:firebase-auth:16.0.1'declared twice
– Ashish Kudale
Jan 3 at 6:52
No I ain't using flutter. Could flutter solve this problem? I've removed the double declaration of firebase auth now, will let you know if this solves it.
– CM Hacks
Jan 3 at 7:16
Removing twice declaration of firebaseauth did not Solve the issue.
– CM Hacks
Jan 3 at 8:29
Please add the code that produces this exception and please also responde with @AlexMamo
– Alex Mamo
Jan 3 at 20:04
|
show 2 more comments
I have been coding in Android Studio using Firebase as my Database. The app works fine for a certain period of time, but crashes later on.
PROJECT LEVEL GRADLE FILE
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
APP LEVEL GRADLE FILE
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.admin.firstapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:support-annotations:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'de.hdodenhof:circleimageview:2.2.0'
api 'com.theartofdev.edmodo:android-image-cropper:2.7.+'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-crash:16.0.1'
implementation 'com.firebaseui:firebase-ui-storage:4.1.0'
implementation 'com.firebaseui:firebase-ui-database:4.1.0'
implementation 'com.github.jakebonk:NotifyMe:1.0.0'
implementation 'com.github.MAXDeliveryNG:slideview:1.1.0'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
ERROR
E/AndroidRuntime: FATAL EXCEPTION: TokenRefresher
Process: com.example.admin.firstapp, PID: 13467
java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firestapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
E/UncaughtException: java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firstapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
The app crashes after about 15/20 mins of inactivity. It doesn't go to fragments or activities which involve firebase.
CODE THAT PRODUCES THE ERROR
public class ViewBankProfile extends AppCompatActivity {
private ImageButton editPic, cancel, confirmupdate;
private EditText bankname, description, contact, website;
private TextView bankusername;
private DatabaseReference mDatabase;
private String username;
private Button update;
private CircleImageView bankProfileImage;
private static final int GalleryPicK = 1;
private StorageReference bankProfileImageRef;
private ProgressDialog loadingbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_bank_profile);
bankusername = findViewById(R.id.view_bank_user_name);
bankname = findViewById(R.id.edit_bank_name);
description = findViewById(R.id.edit_bio);
website = findViewById(R.id.edit_website);
contact = findViewById(R.id.edit_bank_contact_no);
cancel = findViewById(R.id.cancel_edit_bank_profile);
confirmupdate = findViewById(R.id.confirm_edit_bank_profile);
update = findViewById(R.id.update_bank_profile);
bankProfileImage = findViewById(R.id.view_profile_pic);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImageRef = FirebaseStorage.getInstance().getReference().child("Bank Images");
loadingbar = new ProgressDialog(this);
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
username = sharedPreferences.getString("UserName", "UserName");
if (!username.equals("UserName")) {
mDatabase = FirebaseDatabase.getInstance().getReference().child("Banks").child(username);
}
Toolbar profileToolbar = findViewById(R.id.profile_toolbar);
profileToolbar.setTitle("");
setSupportActionBar(profileToolbar);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
editPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
confirmupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
final SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
if (requestCode == GalleryPicK && resultCode == RESULT_OK && data != null) {
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
final CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode==RESULT_OK)
{
loadingbar.setTitle("Uploading");
loadingbar.setMessage("Please wait while your profile Image is Uploading...");
loadingbar.show();
final Uri resultUri = result.getUri();
final StorageReference filepath = bankProfileImageRef.child(username + ".jpg");
filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()){
Toast.makeText(getApplication(),"Profile Image Uploaded",Toast.LENGTH_SHORT).show();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), result.getUri());
String path = saveToInternalStorage(bitmap);
loadImageFromStorage(path);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Image",path);
save.apply();
} catch (IOException e) {
e.printStackTrace();
}
loadingbar.dismiss();
}
else
{
String message = task.getException().toString();
Toast.makeText(getApplication(),"Error: "+message,Toast.LENGTH_LONG).show();
loadingbar.dismiss();
}
}
});
}
}
}
@Override
protected void onStart() {
super.onStart();
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = sharedPreferences.getString("Name", "Name");
String username = sharedPreferences.getString("UserName", "UserName");
String con = sharedPreferences.getString("Contact", "Contact");
String des = sharedPreferences.getString("Description", "Enter Information about the bank");
String web = sharedPreferences.getString("Website", "Website");
String path = sharedPreferences.getString("Image","N/A");
if(!path.equals("N/A"))
{
loadImageFromStorage(path);
}
bankusername.setText(username);
bankname.setText(name);
description.setText(des);
website.setText(web);
contact.setText(con);
}
private void updatebankprofile() {
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = bankname.getText().toString().trim();
String con = contact.getText().toString().trim();
String des = description.getText().toString().trim();
String web = website.getText().toString().trim();
HashMap<String, Object> update = new HashMap<>();
update.put("Name", name);
update.put("Contact", con);
update.put("Description", des);
update.put("Website", web);
mDatabase.updateChildren(update);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Name", name);
save.putString("Description", des);
save.putString("Contact", con);
save.putString("Website",web);
save.apply();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
private String saveToInternalStorage(Bitmap bitmap){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,"profile.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return directory.getAbsolutePath();
}
private void loadImageFromStorage(String path)
{
try {
File f=new File(path, "profile.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
CircleImageView img=(CircleImageView) findViewById(R.id.view_profile_pic);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
I have added one java code, however this error is produced wherever firebase Database is involved.
java
I have been coding in Android Studio using Firebase as my Database. The app works fine for a certain period of time, but crashes later on.
PROJECT LEVEL GRADLE FILE
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
APP LEVEL GRADLE FILE
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.admin.firstapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:support-annotations:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'de.hdodenhof:circleimageview:2.2.0'
api 'com.theartofdev.edmodo:android-image-cropper:2.7.+'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-crash:16.0.1'
implementation 'com.firebaseui:firebase-ui-storage:4.1.0'
implementation 'com.firebaseui:firebase-ui-database:4.1.0'
implementation 'com.github.jakebonk:NotifyMe:1.0.0'
implementation 'com.github.MAXDeliveryNG:slideview:1.1.0'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
ERROR
E/AndroidRuntime: FATAL EXCEPTION: TokenRefresher
Process: com.example.admin.firstapp, PID: 13467
java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firestapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
E/UncaughtException: java.lang.NoSuchFieldError: No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in /data/app/com.example.admin.firstapp-hfO7_xvBp7yTRBLG4jEOKg==/split_lib_dependencies_apk.apk)
at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown Source:7)
at com.google.android.gms.flags.FlagRegistry.initialize(Unknown Source:4)
at com.google.firebase.auth.internal.zzx.initialize(Unknown Source:3)
at com.google.firebase.auth.internal.zzt.run(Unknown Source:14)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
The app crashes after about 15/20 mins of inactivity. It doesn't go to fragments or activities which involve firebase.
CODE THAT PRODUCES THE ERROR
public class ViewBankProfile extends AppCompatActivity {
private ImageButton editPic, cancel, confirmupdate;
private EditText bankname, description, contact, website;
private TextView bankusername;
private DatabaseReference mDatabase;
private String username;
private Button update;
private CircleImageView bankProfileImage;
private static final int GalleryPicK = 1;
private StorageReference bankProfileImageRef;
private ProgressDialog loadingbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_bank_profile);
bankusername = findViewById(R.id.view_bank_user_name);
bankname = findViewById(R.id.edit_bank_name);
description = findViewById(R.id.edit_bio);
website = findViewById(R.id.edit_website);
contact = findViewById(R.id.edit_bank_contact_no);
cancel = findViewById(R.id.cancel_edit_bank_profile);
confirmupdate = findViewById(R.id.confirm_edit_bank_profile);
update = findViewById(R.id.update_bank_profile);
bankProfileImage = findViewById(R.id.view_profile_pic);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImageRef = FirebaseStorage.getInstance().getReference().child("Bank Images");
loadingbar = new ProgressDialog(this);
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
username = sharedPreferences.getString("UserName", "UserName");
if (!username.equals("UserName")) {
mDatabase = FirebaseDatabase.getInstance().getReference().child("Banks").child(username);
}
Toolbar profileToolbar = findViewById(R.id.profile_toolbar);
profileToolbar.setTitle("");
setSupportActionBar(profileToolbar);
editPic = findViewById(R.id.edit_profile_pic);
bankProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
editPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,GalleryPicK);
}
});
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
confirmupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updatebankprofile();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
final SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
if (requestCode == GalleryPicK && resultCode == RESULT_OK && data != null) {
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
final CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode==RESULT_OK)
{
loadingbar.setTitle("Uploading");
loadingbar.setMessage("Please wait while your profile Image is Uploading...");
loadingbar.show();
final Uri resultUri = result.getUri();
final StorageReference filepath = bankProfileImageRef.child(username + ".jpg");
filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()){
Toast.makeText(getApplication(),"Profile Image Uploaded",Toast.LENGTH_SHORT).show();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), result.getUri());
String path = saveToInternalStorage(bitmap);
loadImageFromStorage(path);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Image",path);
save.apply();
} catch (IOException e) {
e.printStackTrace();
}
loadingbar.dismiss();
}
else
{
String message = task.getException().toString();
Toast.makeText(getApplication(),"Error: "+message,Toast.LENGTH_LONG).show();
loadingbar.dismiss();
}
}
});
}
}
}
@Override
protected void onStart() {
super.onStart();
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = sharedPreferences.getString("Name", "Name");
String username = sharedPreferences.getString("UserName", "UserName");
String con = sharedPreferences.getString("Contact", "Contact");
String des = sharedPreferences.getString("Description", "Enter Information about the bank");
String web = sharedPreferences.getString("Website", "Website");
String path = sharedPreferences.getString("Image","N/A");
if(!path.equals("N/A"))
{
loadImageFromStorage(path);
}
bankusername.setText(username);
bankname.setText(name);
description.setText(des);
website.setText(web);
contact.setText(con);
}
private void updatebankprofile() {
SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
String name = bankname.getText().toString().trim();
String con = contact.getText().toString().trim();
String des = description.getText().toString().trim();
String web = website.getText().toString().trim();
HashMap<String, Object> update = new HashMap<>();
update.put("Name", name);
update.put("Contact", con);
update.put("Description", des);
update.put("Website", web);
mDatabase.updateChildren(update);
SharedPreferences.Editor save = sharedPreferences.edit();
save.putString("Name", name);
save.putString("Description", des);
save.putString("Contact", con);
save.putString("Website",web);
save.apply();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
private String saveToInternalStorage(Bitmap bitmap){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,"profile.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return directory.getAbsolutePath();
}
private void loadImageFromStorage(String path)
{
try {
File f=new File(path, "profile.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
CircleImageView img=(CircleImageView) findViewById(R.id.view_profile_pic);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplication(), BankActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
I have added one java code, however this error is produced wherever firebase Database is involved.
java
java
edited Jan 9 at 4:08
CM Hacks
asked Jan 3 at 6:33
CM HacksCM Hacks
64
64
are you using flutter
– Ashish Kudale
Jan 3 at 6:46
'com.google.firebase:firebase-auth:16.0.1'declared twice
– Ashish Kudale
Jan 3 at 6:52
No I ain't using flutter. Could flutter solve this problem? I've removed the double declaration of firebase auth now, will let you know if this solves it.
– CM Hacks
Jan 3 at 7:16
Removing twice declaration of firebaseauth did not Solve the issue.
– CM Hacks
Jan 3 at 8:29
Please add the code that produces this exception and please also responde with @AlexMamo
– Alex Mamo
Jan 3 at 20:04
|
show 2 more comments
are you using flutter
– Ashish Kudale
Jan 3 at 6:46
'com.google.firebase:firebase-auth:16.0.1'declared twice
– Ashish Kudale
Jan 3 at 6:52
No I ain't using flutter. Could flutter solve this problem? I've removed the double declaration of firebase auth now, will let you know if this solves it.
– CM Hacks
Jan 3 at 7:16
Removing twice declaration of firebaseauth did not Solve the issue.
– CM Hacks
Jan 3 at 8:29
Please add the code that produces this exception and please also responde with @AlexMamo
– Alex Mamo
Jan 3 at 20:04
are you using flutter
– Ashish Kudale
Jan 3 at 6:46
are you using flutter
– Ashish Kudale
Jan 3 at 6:46
'com.google.firebase:firebase-auth:16.0.1' declared twice– Ashish Kudale
Jan 3 at 6:52
'com.google.firebase:firebase-auth:16.0.1' declared twice– Ashish Kudale
Jan 3 at 6:52
No I ain't using flutter. Could flutter solve this problem? I've removed the double declaration of firebase auth now, will let you know if this solves it.
– CM Hacks
Jan 3 at 7:16
No I ain't using flutter. Could flutter solve this problem? I've removed the double declaration of firebase auth now, will let you know if this solves it.
– CM Hacks
Jan 3 at 7:16
Removing twice declaration of firebaseauth did not Solve the issue.
– CM Hacks
Jan 3 at 8:29
Removing twice declaration of firebaseauth did not Solve the issue.
– CM Hacks
Jan 3 at 8:29
Please add the code that produces this exception and please also responde with @AlexMamo
– Alex Mamo
Jan 3 at 20:04
Please add the code that produces this exception and please also responde with @AlexMamo
– Alex Mamo
Jan 3 at 20:04
|
show 2 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54017386%2ffirebase-android-app-keeps-crashing-after-a-certain-time%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54017386%2ffirebase-android-app-keeps-crashing-after-a-certain-time%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
are you using flutter
– Ashish Kudale
Jan 3 at 6:46
'com.google.firebase:firebase-auth:16.0.1'declared twice– Ashish Kudale
Jan 3 at 6:52
No I ain't using flutter. Could flutter solve this problem? I've removed the double declaration of firebase auth now, will let you know if this solves it.
– CM Hacks
Jan 3 at 7:16
Removing twice declaration of firebaseauth did not Solve the issue.
– CM Hacks
Jan 3 at 8:29
Please add the code that produces this exception and please also responde with @AlexMamo
– Alex Mamo
Jan 3 at 20:04