. \ key.p12: abierto fallido: ENOENT (No hay tal archivo o directorio)

En mi aplicación Android accedo al almacenamiento en la nube de Google. He generado la llave privada xxxxxxxkey.p12 . He puesto mi archivo dominante en carpeta de los activos. Pero mientras ejecuta el proyecto no está abriendo el archivo key.p12. He intentado ponerlo fuera de la carpeta de activos, todavía no hay resultado.

httpTransport = AndroidHttp.newCompatibleTransport(); AssetManager am = getAssets(); InputStream inputStream = am.open("xxxxxxxxxxKey.p12"); File file = createFileFromInputStream(inputStream); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com") .setServiceAccountScopes(Collections.singleton(STORAGE_SCOPE)) .setServiceAccountPrivateKeyFromP12File(file).build(); 

createFileFromInputStream ()

 private File createFileFromInputStream(InputStream inputStream) { try { File f = new File("download/MyKey.p12"); OutputStream outputStream = new FileOutputStream(f); byte buffer[] = new byte[1024]; int length = 0; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } outputStream.close(); inputStream.close(); return f; } catch (IOException e) { // Logging exception } return null; } 

He hecho lo mismo en el proyecto java. ¿Qué hace la diferencia, es debido a Android? o la ruta de acceso a la ubicación del archivo es incorrecta?

Después de alguna lucha tengo mi respuesta, muchas gracias por su apoyo. ¡Pulgares hacia arriba!

Archivo se puede recuperar utilizando AssetManager y también podemos obtenerlo como un recurso bruto

Uso de AssetManager

  AssetManager am = getAssets(); InputStream inputStream = am.open("xxxxxxxxxxKey.p12"); File file = createFileFromInputStream(inputStream); 

Como recurso en bruto , coloque el archivo en la carpeta en bruto dentro del directorio res

  InputStream ins = getResources().openRawResource(R.raw.keyfile); File file = createFileFromInputStream(ins); 

Mientras escribo el archivo de salida tienes que especificar dónde pertenece realmente tu keyfile, en mi caso estoy usando android, estoy creando el archivo dentro del almacenamiento interno (emulador / dispositivo) dentro de la carpeta KeyHolder / KeyFile

 private File createFileFromInputStream(InputStream inputStream) { String path = ""; File file = new File(Environment.getExternalStorageDirectory(), "KeyHolder/KeyFile/"); if (!file.exists()) { if (!file.mkdirs()) Log.d("KeyHolder", "Folder not created"); else Log.d("KeyHolder", "Folder created"); } else Log.d("KeyHolder", "Folder present"); path = file.getAbsolutePath(); try { File f = new File(path+"/MyKey"); OutputStream outputStream = new FileOutputStream(f); byte buffer[] = new byte[1024]; int length = 0; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } outputStream.close(); inputStream.close(); return f; } catch (IOException e) { // Logging exception e.printStackTrace(); } return null; } 

y eso es !

  • Eliminar los recursos no utilizados antes del envío
  • Bitmaps de Android en la memoria de fugas xml?
  • ¿Se puede añadir subcarpeta al diseño en el proyecto Eclipse Android?
  • Recursos de Android que convierten a string Warning TypedValue
  • Android ¿Es posible definir un mapa en un archivo XML?
  • ¿Cómo obtener eficientemente una matriz corta de recursos en Android?
  • TextView negrita a través de un archivo xml?
  • Cómo acceder a los recursos en un proyecto de biblioteca de Android
  • Crashing debido a "No identificador de paquete al obtener el valor del número de recurso ..."
  • Samsung Galaxy Nexus diseño / estructura estirable?
  • ¿Cómo importar recursos de un proyecto de biblioteca?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.