Consejos útiles

Obtener el camino a una tarjeta SD de Android

Pin
Send
Share
Send
Send


| 18.04.2017

No es ningún secreto que el sistema operativo Android generalizado en el mundo móvil.

Tal uso generalizado de la creación de Google provoca un aumento en el número de ataques de hackers en esta plataforma. Para lidiar con este momento desagradable, el gigante de TI está tratando de introducir nuevas características destinadas a aumentar la seguridad de los propietarios de dispositivos con el sistema Android, pero algunas de estas funciones pueden convertirse en una fuente de inconvenientes adicionales. A continuación se explicará cómo eliminar uno de estos inconvenientes.

Restringir el acceso a una tarjeta de memoria

¿Por qué los programas de Android no tienen acceso a la raíz de la tarjeta SD?
El hecho es que el acceso abierto a la raíz del disco es un gran agujero de seguridad en todo el sistema operativo. Al intentar proteger a los usuarios de usuarios maliciosos, Google dio un paso como restringir el acceso a una tarjeta de memoria.

Esta situación no es adecuada para todos, por lo que a continuación consideraremos una forma de devolver el acceso de los programas de terceros a la raíz de la tarjeta de memoria.

NextApp SDFix

Inmediatamente, notamos que para resolver el problema, necesitamos derechos de root para el usuario en el sistema Android. En el articulo Eliminamos anuncios en Android. Archivo de hosts Ya hemos tocado esta definición. A continuación hay un breve extracto:

raíz - Estos son derechos de superusuario en sistemas similares a UNIX. Para ser más precisos, entonces raíz - Esta es una cuenta cuyo propietario tiene derechos de acceso privilegiados y cambios en el sistema de archivos

Entonces, de hecho, tenemos dos opciones:

  • software (en modo automático),
  • manual (edición de archivos del sistema).

Para usar el método de software, necesitamos descargar la aplicación a nuestro dispositivo SDFix: KitKat MicroSD grabable de la empresa Nextapp de la tienda Google Play o del archivo adjunto a este artículo: nextapp.sdfix

Instale el programa y ejecútelo, otorgando permiso de root

Aceptamos hacer cambios y hacer clic en el botón Continuar
Después de esperar un poco, el programa mostrará un mensaje sobre la finalización exitosa de la operación

Además, antes de realizar cambios en el programa. SDFix crea una copia de seguridad de los archivos editables, que se guarda en el camino

Si es necesario, siempre podemos restaurar el archivo original, habiendo eliminado previamente el final .original-pre-sdfix en su nombre El archivo se reemplaza por analogía con su cambio, este proceso se describe a continuación.

Acceso manual a una tarjeta de memoria en Android

La solución de problemas de grabación en una tarjeta SD externa en Android 4.4+ también es posible en modo manual.
Debe entenderse que el programa SDFix mencionado anteriormente solo realiza una función, que puede reproducirse independientemente.

Además, si el programa genera un error durante la operación, hacer la misma operación manualmente puede ser coronado con éxito.

Aquí hay una instrucción paso a paso para editar un archivo platform.xml

  1. Hacemos una copia de seguridad del sistema de teléfonos inteligentes. Necesitamos una copia de seguridad para poder retroceder en caso de circunstancias imprevistas y fallas. Simplemente puede hacer una copia del archivo que vamos a editar, pero será más confiable hacer una copia de seguridad completa del sistema desde la recuperación
  2. Ahora ejecute cualquier administrador de archivos de Android, digamos que será Comandante total
  3. Ir al directorio
  4. Copie el archivo del directorio platform.xml a cualquier lugar conveniente
  5. Abra el archivo creado con un editor de texto para realizar cambios.
  6. Encontramos en el archivo un código que se ve así:
  7. Y antes de la etiqueta de cierre, escriba la siguiente línea:

Como resultado, deberíamos obtener el siguiente fragmento de código:

  • Guardar cambios
  • Copie el archivo editado nuevamente a la carpeta / system / etc / permissions /, aceptando un reemplazo (es decir, cuando se le solicite, haga clic en Sobrescribir)
  • Ahora en las propiedades del archivo le asignamos derechos rw-r - r-- (el código correspondiente a esta configuración es 0644)
  • Reiniciamos el dispositivo.
  • Eso es todo. Después de que su dispositivo se inicie, las aplicaciones de terceros podrán escribir sus datos en la raíz de nuestra tarjeta flash.

    Hemos proporcionado acceso a la raíz de la tarjeta de memoria para programas de Android.

    Derechos plenos y posibilidades ilimitadas.

    Terminología

    Google nos dice que existen los siguientes conceptos:

    1. Interno (interno) La memoria es parte de la tarjeta de memoria integrada en el teléfono. Al usarlo, de manera predeterminada, la carpeta de la aplicación está protegida del acceso por otras aplicaciones (Uso del almacenamiento interno).
    2. Externo (externo) la memoria es un "almacenamiento externo" común, es decir Puede ser parte de la memoria interna o un dispositivo extraíble. Por lo general, esto es parte de la memoria integrada, la última vez que vi un dispositivo extraíble en Android 2.2, donde la memoria integrada era de aproximadamente 2 GB y la memoria conectada se volvió externa (Uso del almacenamiento externo).
    3. Eliminable (extraíble) memoria: todos los almacenamientos que pueden extraerse del dispositivo sin intervenciones "quirúrgicas".

    Antes de KitKat 4.4, la API no proporcionaba funcionalidad para obtener rutas a la memoria externa. A partir de esta versión (API 19), la función public abstract File [] getExternalFilesDirs (Tipo de cadena), que devuelve una matriz de cadenas con rutas a la memoria interna y externa. Pero, ¿qué pasa con nuestra tarjeta SD, que se inserta en la ranura? El camino hacia él nuevamente no podemos llegar.

    Método 1 (opción simple)

    Después de instalar Root en su teléfono inteligente o tableta Android, vaya a la tienda de aplicaciones Google Play y descargue SDFix: KitKat MicroSD grabable (gratis) Después de la instalación, vaya a la aplicación SDFix y haga clic en "Continuar"

    Luego espere un par de segundos hasta que se solucione el error. ¡Cierre SDFix y reinicie Android para que los cambios surtan efecto! Eso es todo!

    Método 2 (simple, una opción para aquellos que quieran saber más)

    El método descrito anteriormente es automático, pero puede solucionarlo a mano, ¡especialmente porque no es nada difícil! Para hacer esto, debe instalar la aplicación del administrador de archivos, por ejemplo ES Explorer, después de otorgar primero acceso de root a la partición del sistema.

    Vaya al administrador de archivos a la partición del sistema:

    Luego ábralo con el editor de texto incorporado ES Explorer

    Agregue otro parámetro justo debajo.

    ¡Reinicie su teléfono inteligente o tableta Android para que los cambios surtan efecto! ¡El problema con el acceso a la tarjeta de memoria ha sido resuelto!

    El método en presencia de acceso raíz (cualquier administrador de Root es adecuado).

    Entonces, primero necesitamos el programa SDFix (está disponible en Google Play), abra el enlace y haga clic en instalar.

    Comenzamos, leemos la advertencia de que es posible romper el teléfono, pero tenemos suerte, por lo tanto, presionamos el botón Continuar.

    Marque la casilla de verificación y haga clic nuevamente. Continuar

    Después de hacer clic en la aplicación, el programa requerirá acceso de root desde el dispositivo, si tiene SuperSU, entonces le damos root, si no, vemos este mensaje:

    Como dije, usaré la raíz incorporada, por lo que estamos buscando el "Seguridad»En el escritorio y ejecute la aplicación. Haz clic en el botón "Permisos«.

    Y hacemos clic en nuestro SDFix, si no lo tiene en las listas, entonces no realizó los primeros pasos de esta instrucción, para usar la raíz estándar, se requiere una solicitud de la aplicación.

    Esperamos cinco segundos y confirmamos el permiso para otorgar mayores derechos.

    Abra SDFix nuevamente y repita los primeros pasos de esta instrucción, la salida será la siguiente ventana.

    Dice que todas las aplicaciones que lo solicitaron recibieron acceso a la unidad flash USB y que debe reiniciar el teléfono. Reiniciamos y recordamos que después de actualizar el firmware, los pasos deberán repetirse.

    Método para teléfonos sin root

    Si alguien todavía no entiende, entonces casi todo este sitio es una reescritura de calidad, un texto sobre el complejo, reescrito personalmente en el idioma más simple posible. No indico las fuentes, ya que solo busco inspiración en los artículos de otras personas y no intento copiarlos. Entonces, aquí enviaron un enlace a un artículo con este método en el comentario, entonces, ¿por qué no reescribirlo para ayudar a los usuarios sin root que ya han llegado a este sitio?

    Voy a cambiar a MIUI 8 desde miui.su, el acceso a la unidad flash USB siempre es predeterminado, por lo que no puedo comprobarlo, pero según la idea, este método también puede adaptarse a otras versiones de Android.

    Abra "Configuración" → desplácese hacia abajo en la lista y haga clic en "Todas las aplicaciones".

    Desplácese hasta la parte inferior y vea allí "Documentos" marcados como "Desactivado". Toca en él.

    En la parte inferior de la pantalla, haga clic en el botón "Activar".

    Lo más interesante es que no parece apagarlo manualmente, pero bueno, no lo necesitamos. Acudimos al administrador de archivos que necesitaba acceso y verificamos su disponibilidad.

    Como todo Espero que este artículo te haya sido útil, haz clic en uno de los botones a continuación para contarles a tus amigos. También suscríbase a las actualizaciones del sitio ingresando su correo electrónico en el campo de la derecha o suscribiéndose al grupo en Vkontakte.

    Gracias por su atención

    Resultados de busqueda

    Para responder a esta pregunta, recurrí al omnisciente Google. Pero no me dio una respuesta clara. Se consideraron muchas opciones para determinar desde el uso de funciones estándar que conducen a la memoria externa, pero no tienen nada que ver con los dispositivos de almacenamiento eliminados, hasta el procesamiento de las reglas de montaje del dispositivo (Android funciona en el kernel de Linux). En los últimos casos, se utilizaron rutas "cableadas" a la carpeta con dispositivos montados (en diferentes versiones este directorio es diferente). No olvide que de una versión a otra cambian las reglas de montaje.

    Al final, decidí combinar todo el conocimiento adquirido y escribí mi propia clase, que puede devolvernos los caminos a dispositivos externos y extraíbles.

    Descripción del código

    La clase fue creada Mountdevice, que contiene la ruta al dispositivo, el tipo de dispositivo y algunos hash.
    Hay dos tipos de dispositivos asignados (no toqué la memoria interna, ya que se puede acceder al acceso a través de la API del sistema).


    Y se creó una clase Ayuda de almacenamiento, que busca las tarjetas de memoria disponibles.

    La clase StorageHelper implementa dos métodos de búsqueda: a través del entorno del sistema (Medio ambiente) y utilizando la utilidad Linux montar, o más bien el resultado de su implementación.

    Método uno - Medio ambiente

    Cuando trabajo con el entorno, uso la función estándar getExternalStorageDirectory () para obtener información sobre la memoria externa. Para obtener información sobre la memoria eliminada, utilizo la variable de entorno "SECONDARY_STORAGE".

    La memoria externa siempre es una y generalmente siempre lo es, por lo que verificamos su legibilidad, calculamos el hash y lo recordamos. Puede haber mucha memoria eliminada, por lo tanto, es necesario dividir la cadena resultante por el separador y verificar cada valor.

    La solución se toma de stackoverflow. La respuesta está allá abajo en alguna parte.

    Método dos: montaje

    Como durante mucho tiempo no pude lograr que el sistema me dijera el camino hacia la memoria eliminada, decidí mirar en la dirección de los dispositivos montados. El sistema tiene archivos de configuración que describen las reglas para montar dispositivos externos. Todo estaría bien, pero en la versión 4. * de Android no hay acceso de simples mortales a este archivo, por lo que no consideraré este método.

    Volver a la utilidad de montaje. Cuando se inicia sin parámetros, el comando devuelve una lista de sistemas de archivos montados. Los dispositivos eliminados generalmente tienen el formato del sistema de archivos FAT, luego resaltaremos las líneas en las que existe una característica "gordo". La memoria externa se caracterizará por el parámetro".fusible".

    Nota: cuando se utiliza este método, no siempre es correcto (lo más probable es que no haya tenido en cuenta algo) se determinan los tipos de dispositivos montados. Noté la diferencia en diferentes versiones de Android. Por lo tanto, este método puede usarse como uno adicional.

    La solución se toma de stackoverflow. Las respuestas allí son algo similares.

    Sobre duplicación

    Muchos notaron la siguiente imagen en el directorio de montaje del dispositivo:

    Y lo más interesante, todo esto es la misma tarjeta de memoria externa. Dicha fragmentación comienza con la versión Jelly Bean y esto se hace para admitir el modo multiusuario del sistema. Más detalles aquí. Y así, para no obtener la misma tarjeta de memoria que los diferentes dispositivos, se necesita una forma de determinar la identidad. Si había acceso a la configuración de montaje, entonces no había preguntas. Pero no hay acceso. Por lo tanto, aquí descubrí una solución con un cálculo hash para cada dispositivo:

    1. crear StringBuilder
    2. escribirle el tamaño total del dispositivo y el tamaño del espacio utilizado del dispositivo
    3. omitir el contenido de la raíz del dispositivo
    4. escribe el nombre del directorio
    5. escribe el nombre y el tamaño del archivo
    6. calcular hash

    Mira el video: Cómo mover fotografias y videos a la tarjeta SD en Android (Septiembre 2021).

    Pin
    Send
    Share
    Send
    Send