Archivo de configuración de Android

¿Cuál es la mejor manera y cómo configurar un archivo de configuración para una aplicación?

Quiero que la aplicación sea capaz de buscar en un archivo de texto en la tarjeta sd y seleccionar cierta información que requiere?

Puede lograr esto usando preferencias compartidas

Hay una guía muy detallada sobre cómo usar las Preferencias compartidas en la página de Google Android https://developer.android.com/guide/topics/data/data-storage.html#pref

Si su aplicación va a ser lanzado al público y si tiene datos confidenciales en su configuración como claves de API o contraseñas, sugeriría usar preferencias seguras en lugar de SharedPreferences ya que en última instancia SharedPreferences se almacenan en un XML en texto claro y en Un teléfono con raíz es muy fácil para una aplicación acceder a las preferencias compartidas de otro.

Por defecto, no es una prueba de seguridad a prueba de balas (de hecho es más como ofuscación de las preferencias), pero es una victoria rápida para incrementar la seguridad de su aplicación para Android. Por ejemplo, detendrá a los usuarios de dispositivos con raíces que modifiquen fácilmente las preferencias compartidas de la aplicación. ( Enlace )

Yo sugeriría algunos de otros métodos:

Método 1: Utilice un archivo * .properties con Propiedades

Pros:

  1. Fácil de editar desde cualquier IDE que esté utilizando
  2. Más seguro: puesto que se compila con tu aplicación
  3. Puede ser reemplazado fácilmente si utiliza Variantes de creación / Sabores
  4. También puede escribir en la configuración

Contras:

  1. Necesitas un contexto
  2. También puede escribir en el config (sí, también puede ser un con)
  3. (¿Algo más?)

Primero, cree un archivo de configuración: res/raw/config.properties y agregue algunos valores:

 api_url=http://url.to.api/v1/ api_key=123456 

A continuación, puede acceder fácilmente a los valores con algo como esto:

 package some.package.name.app; import android.content.Context; import android.content.res.Resources; import android.util.Log; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public final class Helper { private static final String TAG = "Helper"; public static String getConfigValue(Context context, String name) { Resources resources = context.getResources(); try { InputStream rawResource = resources.openRawResource(R.raw.config); Properties properties = new Properties(); properties.load(rawResource); return properties.getProperty(name); } catch (Resources.NotFoundException e) { Log.e(TAG, "Unable to find the config file: " + e.getMessage()); } catch (IOException e) { Log.e(TAG, "Failed to open config file."); } return null; } } 

Uso:

 String apiUrl = Helper.getConfigValue(this, "api_url"); String apiKey = Helper.getConfigValue(this, "api_key"); 

Por supuesto esto podría ser optimizado para leer el archivo de configuración una vez y obtener todos los valores.

Método 2: Utilice el elemento de meta-datos AndroidManifest.xml:

Personalmente nunca he usado este método porque no parece muy flexible.

En tu AndroidManifest.xml agrega algo como:

 ... <application ...> ... <meta-data android:name="api_url" android:value="http://url.to.api/v1/"/> <meta-data android:name="api_key" android:value="123456"/> </application> 

Ahora una función para recuperar los valores:

 public static String getMetaData(Context context, String name) { try { ApplicationInfo ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); Bundle bundle = ai.metaData; return bundle.getString(name); } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Unable to load meta-data: " + e.getMessage()); } return null; } 

Uso:

 String apiUrl = Helper.getMetaData(this, "api_url"); String apiKey = Helper.getMetaData(this, "api_key"); 

Método 3: Use buildConfigField en su Sabor :

No he encontrado esto en la documentación oficial de Android / formación, pero este artículo de blog es muy útil.

Básicamente la creación de un proyecto Sabor (por ejemplo prod ) y luego en su aplicación build.gradle tienen algo así como:

 productFlavors { prod { buildConfigField 'String', 'API_URL', '"http://url.to.api/v1/"' buildConfigField 'String', 'API_KEY', '"123456"' } } 

Uso:

 String apiUrl = BuildConfig.API_URL; String apiKey = BuildConfig.API_KEY; 

Si desea almacenar las preferencias de su aplicación, Android proporciona SharedPreferences para esto.
Aquí está el enlace a los recursos de capacitación oficiales.

  • Comprobación de la configuración de Acceso a la notificación de seguridad del sistema de Android mediante programación
  • Configuración de red móvil en Android 4.1
  • ¿Dónde Android almacena la configuración del sistema, como redes WiFi?
  • Ejecución instantánea en Android Studio 2.0 (cómo desactivar)
  • ¿Puedo configurar gmail en el emulador de Android?
  • ¿Cómo actualiza PreferenceActivity para mostrar los cambios en la configuración?
  • ¿Dónde instalar Android SDK en Mac OS X?
  • onConfigurationChanged () llamando dos veces cuando cambia la orientación de Paisaje a Retrato
  • Android: Cambiar la configuración NFC (on / off) mediante programación
  • ¿Cómo cambiar el idioma de toda una aplicación Android?
  • Desactivar la bombilla en el editor Java de Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.