No se puede escribir en el archivo en el emulador de Android

Descripción del problema

Estoy escribiendo la aplicación para Android y uso código nativo, y probarlo en Android-Emulator . Con el fin de ver lo que sucede en el código JNI crear archivo en Android / data / LogTest / carpeta y escribir mi información de registro en ella.

FILE * pFile; pFile = fopen ("/data/LogTest/Log.txt"", "w"); // .... // Write some logs to file ... // .... 

Cuando corro en la aplicación de la primera vez Android todo va bien, puedo ver los registros en el archivo Log.txt. Pero cuando cierre la aplicación de Android y ejecutarlo de nuevo no pasa nada. Al igual que la aplicación no puede escribir registros en el archivo segunda vez.

Ideas de uno mismo

Pienso que la razón principal de este problema es que , cuando creo el archivo en la primera vez el nombre de la aplicación del creador está para el ex. 456 después de cuando intento escribir algo más de información a la aplicación de archivo Nombre es para ex. 856 y por lo tanto la aplicación 856 no puede escribir en el archivo que ha creado la aplicación 456 .

Pregunta

  1. Cómo puedo lanzar la aplicación con el mismo nombre, en el orden Android dejarme escribir al archivo en segundo tiempo.
  2. O tal vez el principal motivo o problema no es que la aplicación cada vez obtener rundom nombres.

Creo que no se le permite escribir en esa carpeta. Lee las respuestas aquí. Utilice la tarjeta sdk o el directorio de su aplicación para almacenar archivos.

Operaciones de archivos en Android NDK

Su código está generando un error en mi emulador. Pero tu dices

Cuando corro en la primera aplicación Android de tiempo todo va Bien, puedo ver los registros en el archivo Log.txt

Tal vez usted podría enviarnos más de su código, para que podamos reproducir el error.
Este es mi intento de reproducir tu pregunta

 #include<stdio.h> #include<jni.h> #include<android/log.h>//allow android logging #include<errno.h>//for errors #include<string.h> #define LOG_TAG "DEO MSG"//all my logs are labeled with this #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) void Java_com_deo_MyActivity_writeLogFileUsingC(JNIEnv * env, jobject thisObject) { char filename[]="/data/LogTest/Log.txt"; LOGE("native method started");//is used exactly like the usual printf() FILE * pFile; LOGE("trying to open file for writing"); pFile= fopen(filename, "w"); if(pFile==NULL) { LOGE("Failed to open the file %s in mode 'w'.(DETAILS)%s ",filename,strerror(errno)); } else { LOGE("trying to write to file"); fprintf(pFile,"logExample "); //example of a log. fclose(pFile);//safely close our file LOGE("file writing done"); } } 

El error que genera en logcat es

 ERROR/DEO MSG(816): Failed to open the file /data/LogTest/Log.txt in mode 'w'.(DETAILS)No such file or directory 

Creo que mi problema con su código puede ser permisos. Descríbelo más para nosotros.
PD:

  • Personalmente prefiero usar el logcat para depurar en comparación con los archivos de registro
  • Ptrace devuelve -1 en Android
  • La muestra Hello-jni no funciona en Android Studio 2.0 Vista previa
  • Devuelve jbyteArray desde c nativo en Android
  • Cómo obtener un contexto de una actividad nativa
  • Android: La forma más eficiente de pasar algunos bytes de sólo lectura a C ++ nativo
  • Android LocalServerSocket
  • Defragment H264 NAL corriente (originalmente 1722 avb paquetes)
  • JNI: Pasar varios parámetros en la firma de función para GetMethodID
  • Android OpenGL ES: auto-corrección env-> self y NvRmChannelSubmit fallaron
  • Opencv Android: java.lang.UnsatisfiedLinkError: dlopen falló: no se pudo cargar la librería "libopencv_java.so"
  • Error de segmentación en la biblioteca nativa cuando se ejecuta bajo Android antes de 4.0.3
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.