Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cuál es el uso de MemoryFile en android

Quiero escribir algunos bytes en una memoria compartida. Esto se hace en mi aplicación1. Desde mi otra aplicación: application2 Quiero acceder a esa memoria compartida para leer los bytes escritos. Para este propósito he intentado usar la clase MemoryFile de android. Estoy atascado como la forma de referirse a la misma memoria de fragmentos entre dos aplicaciones diferentes. Ahora también estoy confundido si memoryFile se utiliza para el mismo propósito o no. Http://developer.android.com/reference/android/os/MemoryFile.html este enlace que encontré con respecto al tema. Gracias por adelantado. Krishna

  • Cómo detectar un anillo de llamada saliente en Android usando la clase Visualizer?
  • Determinación de la aplicación de primer plano actual de una tarea o servicio de fondo
  • Ajusta scrollview cuando el teclado está hacia arriba
  • ¿Qué hace canvas.translate?
  • Cómo agregar atributos de aplicación de forma programada en android
  • ¿Cuál es el significado de Incl Tiempo de CPU, Tiempo de CPU Excl, Tiempo de CPU Real Incluso, Tiempo Real de CPU Excl en traceview?
  • StringByEvaluatingJavascriptFromString (método iOS, ¿qué es Android equivalente?)
  • Android: ¿Cómo puedo detener Runnable?
  • instalación automática de apk
  • Cómo recortar Bitmap Center like imageview?
  • ¿Cómo centrar la cámara para que el marcador esté en la parte inferior de la pantalla? (Google map api V2 Android)
  • Porter-Duff: ¿comportamiento diferente para diferentes formas?
  • 3 Solutions collect form web for “¿Cuál es el uso de MemoryFile en android”

    Si desea utilizar algunos procesos MemoryFile con MemoryFile puede utilizar el siguiente método fugly :

     import android.os.MemoryFile; import android.os.ParcelFileDescriptor; import java.io.FileDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MemoryFileUtil { private static final Method sMethodGetParcelFileDescriptor; private static final Method sMethodGetFileDescriptor; static { sMethodGetParcelFileDescriptor = get("getParcelFileDescriptor"); sMethodGetFileDescriptor = get("getFileDescriptor"); } public static ParcelFileDescriptor getParcelFileDescriptor(MemoryFile file) { try { return (ParcelFileDescriptor) sMethodGetParcelFileDescriptor.invoke(file); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } } public static FileDescriptor getFileDescriptor(MemoryFile file) { try { return (FileDescriptor) sMethodGetFileDescriptor.invoke(file); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } } private static Method get(String name) { try { return MemoryFile.class.getDeclaredMethod(name); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } } 

    Lo que debería buscar es el #getParcelFileDescriptor(MemoryFile) que puede devolver desde una implementación de ContentProvider#openFile(Uri, String) .

    Sospecho que los archivos de memoria no tienen el método getParcelFileDescriptor. Cuando comenté este método relacionado con getParcelFileDescriptor y uso getFileDescriptor. Funcionó muy bien.

     import java.io.FileDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.os.MemoryFile; /** * Invoke hidden methods using reflection * */ public class MemoryFileUtil { private static final Method sMethodGetFileDescriptor; static { sMethodGetFileDescriptor = get("getFileDescriptor"); } public static FileDescriptor getFileDescriptor(MemoryFile file) { try { return (FileDescriptor) sMethodGetFileDescriptor.invoke(file); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } } private static Method get(String name) { try { return MemoryFile.class.getDeclaredMethod(name); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } } 

    Y el descriptor de archivo creado del archivo de la memoria.

     FileDescriptor fd = MemoryFileUtil.getFileDescriptor(memFile); 

    MemoryFile se puede utilizar para asignar a la memoria física. El descriptor de archivo de resultados (fd) se puede pasar al cliente (lado de intercambio de memoria). El cliente puede asignar el mismo fd nativo a la misma región de memoria. La memoria puede entonces ser compartida usando el fd nativo, que se puede asignar a la capa de java usando InputStream.

    Consulte este enlace para obtener más detalles:
    Compartir la memoria usando ashem.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.