检查FirebaseData无理由返回null

时间:2018-01-24 14:50:58

标签: android firebase firebase-realtime-database

我有一个应用程序可以检查我的用户何时登录应用程序,如果他们有数据,那么,如果在数据库中找到数据,用户可以使用他的数据,所以如果用户卸载应用程序,或丢失手机,即使他们在其他设备上安装应用程序,数据也会存在。我只是通过提出请求并说'" 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) {

            }
        });
    }

1 个答案:

答案 0 :(得分:0)

我刚发现在我的其他语句中我用这种方式定义了我的语言环境

locale = Locale.getDefault().getLanguage();

但是在CheckIfDataExists()方法的开头,我使用的是oncreate中的语言环境,该语言环境有另一个sintax,所以我无法访问我的数据库

所以,我在方法的开头使用了这个

locale = Locale.getDefault().getLanguage() +"-"+ Locale.getDefault().getISO3Country();

此输入正在返回es-ARG,我只需要es,所以我只添加了getDefault().getLanguage();并且它有效