2020package com .amitshekhar .utils ;
2121
2222import android .content .Context ;
23+ import android .content .res .Resources ;
2324import android .util .Pair ;
2425
26+ import com .amitshekhar .R ;
27+
2528import java .io .File ;
29+ import java .text .MessageFormat ;
2630import java .util .HashMap ;
2731import java .util .List ;
2832
3236
3337public class DatabaseFileProvider {
3438
39+ private final static String DB_PASSWORD_RESOURCE = "DB_PASSWORD_{0}" ;
40+
3541 private DatabaseFileProvider () {
3642 // This class in not publicly instantiable
3743 }
@@ -40,12 +46,29 @@ public static HashMap<String, Pair<File, String>> getDatabaseFiles(Context conte
4046 HashMap <String , Pair <File , String >> databaseFiles = new HashMap <>();
4147 try {
4248 for (String databaseName : context .databaseList ()) {
43- databaseFiles .put (databaseName , new Pair <>(context .getDatabasePath (databaseName ), "" ));
49+ String password = getDbPasswordFromStringResources (context , databaseName );
50+ databaseFiles .put (databaseName , new Pair <>(context .getDatabasePath (databaseName ), password ));
4451 }
4552 } catch (Exception e ) {
4653 e .printStackTrace ();
4754 }
4855 return databaseFiles ;
4956 }
5057
58+ private static String getDbPasswordFromStringResources (Context context , String name ) {
59+ String nameWithoutExt = name ;
60+ if (nameWithoutExt .endsWith (".db" )) {
61+ nameWithoutExt = nameWithoutExt .substring (0 , nameWithoutExt .lastIndexOf ('.' ));
62+ }
63+ String resourceName = MessageFormat .format (DB_PASSWORD_RESOURCE , nameWithoutExt .toUpperCase ());
64+ String password = "" ;
65+
66+ int resourceId = context .getResources ().getIdentifier (resourceName , "string" , context .getPackageName ());
67+
68+ if (resourceId != 0 ) {
69+ password = context .getString (resourceId );
70+ }
71+
72+ return password ;
73+ }
5174}
0 commit comments