Pagine

Tuesday, 23 September 2014

Properties file in Android


Suppose we want to manage some different parameters to configure a given application, and make easy to modify these ones without the need to recompile the entire project.

Just think about the configuration parameters for the connection to a web page or to a given server: if the ip address changes and it is hard-coded within the application, we need to modify it in the code and recompile befor running again.

In this cases it can be useful to create a properties file to trace the most important parameters related to the connection.

We have to work with couples of strings of the form <key,value>, where the key is used to retrieve the correspondent value. 

Suppose that our file configuration.properties is the following:



# Configuration File
ip=95.678.191.255
port=8799
host=pillsfromtheweb.blogspot.it

The class we have to realize to open and read the file is the following class PropertiesReader.java (we assume that the file has been inserted in the assets folder):
public class PropertiesReader { 
 private Context context;
 private Properties properties;
 public PropertiesReader(Context context) { 
  this.context = context;
   //creates a new object ‘Properties’
   properties new Properties();

   public Properties getProperties(String FileName) {
   try {    
    //access to the folder ‘assets’ 
    AssetManager am = context.getAssets(); 
    //opening the file    
    InputStream inputStream = am.open(FileName); 
    //loading of the properties 
    properties.load(inputStream);
   } 
   catch (IOException e) { 
    Log.e("PropertiesReader",e.toString());
   }
  }
  return properties;
 } 

After reading the file, we have to retrieve the values of the connection parameters within through the method readPropertiesFromFile():

private void readPropertiesFromFile(Context context) { 

 //reads the configuration file
 propertiesReader new PropertiesReader(context); 
 p=propertiesReader.getProperties("configuration.properties");

 //recovery of the parameters
 ip_address p.getProperty("ip"); 
 hostname p.getProperty("host"); 
 port p.getProperty("port");
}


No comments:

Post a Comment