我有一个应用程序可以检查我的用户何时登录应用程序,如果他们有数据,那么,如果在数据库中找到数据,用户可以使用他的数据,所以如果用户卸载应用程序,或丢失手机,即使他们在其他设备上安装应用程序,数据也会存在。我只是通过提出请求并说'" ok,如果数据是!=而不是null,就有下载的数据"
所以,如果我不卸载应用程序并且只在用户之间切换,这是正常工作,如果我在不同帐户之间移动,则为每个用户检索数据,但失败的是我的应用程序访问我的其他权限数据库文件检查,我不知道为什么
我的共享首选项没问题,因为如果没有共享首选项,我会使用区域设置字符串作为我的URL_xxx _"" ,所以没有理由在那里成为问题,因为如果我卸载应用程序,共享首选项将从手机中删除,但如果我重新安装应用程序,我将使用区域设置语言。
这里我检查用户是否有一些数据,如果他们有一些数据我检索这些数据并将其存储到内部存储器中,我将在以后访问它。
private void CheckIfDataExists(){
mDatabase.child("Users").child(mAuth.getCurrentUser().getUid()).child("URL_UserFiles").child("URL_planes_"+sharedPrefsDefault.getString(getString(R.string.str_language),locale)).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshotPlanes) {
mDatabase.child("Users").child(mAuth.getCurrentUser().getUid()).child("URL_UserFiles").child("URL_cars_"+sharedPrefsDefault.getString(getString(R.string.str_language),locale)).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshotCars) {
if (dataSnapshotPlanes.getValue()!=null && dataSnapshotCars.getValue()!=null) {
Log.e("Descarga","DATA EXISTS");
File rootPath = new File(getApplicationContext().getCacheDir(),"APP_FILES");
if(!rootPath.exists()) {
rootPath.mkdirs();
}
StorageReference mStorageRefUsuariosPlanes = FirebaseStorage.getInstance().getReference().child("User_Files").child("planes").child("planes_" + mAuth.getCurrentUser().getEmail() + "_" + sharedPrefsDefault.getString(getString(R.string.str_language),"en") + "." + "txt");
StorageReference mStorageRefUsuariosCars = FirebaseStorage.getInstance().getReference().child("User_Files").child("cars").child("cars_" + mAuth.getCurrentUser().getEmail() + "_" + sharedPrefsDefault.getString(getString(R.string.str_language),"en") + "." + "txt");
final File carsUsuarioFile = new File(rootPath, "cars.txt");
final File planesUsuarioFile = new File(rootPath, "planes.txt");
mStorageRefUsuariosCars.getFile(carsUsuarioFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Log.e("TamañoArchivo",""+taskSnapshot.getTotalByteCount());
Log.e("NombreArchivo",""+carsUsuarioFile);
try {
FileOutputStream fos = getApplicationContext().openFileOutput("cars.txt", Context.MODE_PRIVATE);
fos.write(getStringFromFile(carsUsuarioFile.getAbsolutePath()).getBytes());
Log.e("CARSFILEUSUARIO",""+getStringFromFile(carsUsuarioFile.getAbsolutePath()));
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
obsInt.set(obsInt.get()+1);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
mStorageRefUsuariosPlanes.getFile(planesUsuarioFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Log.e("FileSize",""+taskSnapshot.getTotalByteCount());
Log.e("NombreArchivo",""+planesUsuarioFile);
try {
FileOutputStream fos = getApplicationContext().openFileOutput("planes.txt", Context.MODE_PRIVATE);
fos.write(getStringFromFile(planesUsuarioFile.getAbsolutePath()).getBytes());
Log.e("PLANESFILE",""+getStringFromFile(gruposUsuarioFile.getAbsolutePath()));
Log.e("obsintUsuarios",""+obsInt);
} catch (Exception e) {
e.printStackTrace();
Log.e("printStackTrace",""+e.toString());
}
obsInt.set(obsInt.get()+1);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("printStackTrace",""+e.toString());
}
});
}else{
Log.e("Descarga2","DATA DOES NOT EXIST");
locale = Locale.getDefault().getLanguage();
Log.e("LENGUAGE",""+locale);
sharedPrefsDefault.edit().putString(getString(R.string.str_language), locale).apply();
File rootPath = new File(getApplicationContext().getCacheDir(),"APP_FILES");
if(!rootPath.exists()) {
rootPath.mkdirs();//si no existe el directorio lo creamos
}
StorageReference mStorageRefPlanes = FirebaseStorage.getInstance().getReference().child("Country_Data/planes/" + "planes_" + locale + "." + "txt");
StorageReference mStorageRefCars = FirebaseStorage.getInstance().getReference().child("Country_Data/cars/" + "cars_" + locale + "." + "txt");
Log.e("REFERENCIACARS",""+ mStorageRefCars);
Log.e("REFERENCIAGPLANES",""+ mStorageRefPlanes);
final File carsFile = new File(rootPath, "cars.txt");
final File planesFile = new File(rootPath, "planes.txt");
mStorageRefCars.getFile(carsFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Log.e("FileSize",""+taskSnapshot.getTotalByteCount());
Log.e("NombreArchivo",""+carsFile);
try {
FileOutputStream fos = getApplicationContext().openFileOutput("cars.txt", Context.MODE_PRIVATE);
fos.write(getStringFromFile(carsFile.getAbsolutePath()).getBytes());
Log.e("CARSFILEDESCARGARPAIS",""+getStringFromFile(carsFile.getAbsolutePath()));
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
obsInt.set(obsInt.get()+1);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
mStorageRefPlanes.getFile(planesFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Log.e("FileSize",""+taskSnapshot.getTotalByteCount());
Log.e("NombreArchivo",""+planesFile);
try {
FileOutputStream fos = getApplicationContext().openFileOutput("planes.txt", Context.MODE_PRIVATE);
fos.write(getStringFromFile(gruposFile.getAbsolutePath()).getBytes());
Log.e("PLANESFILEDESCARGARPAIS",""+getStringFromFile(gruposFile.getAbsolutePath()));
fos.close();
Log.e("obsintPaises",""+obsInt);
} catch (Exception e) {
e.printStackTrace();
Log.e("printStackTrace",""+e.toString());
}
obsInt.set(obsInt.get()+1);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("printStackTrace",""+e.toString());
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
答案 0 :(得分:0)
我刚发现在我的其他语句中我用这种方式定义了我的语言环境
locale = Locale.getDefault().getLanguage();
但是在CheckIfDataExists()
方法的开头,我使用的是oncreate中的语言环境,该语言环境有另一个sintax,所以我无法访问我的数据库
所以,我在方法的开头使用了这个
locale = Locale.getDefault().getLanguage() +"-"+ Locale.getDefault().getISO3Country();
此输入正在返回es-ARG,我只需要es,所以我只添加了getDefault().getLanguage();
并且它有效