2011-04-23 12 views
9

Estoy desarrollando una aplicación para Android que usa Dropbox para organizar los archivos. Estoy explorando la API de Dropbox, pero su descripción y ayuda son limitadas, ya que no hay documentación para la API de Dropbox.Dropbox Sharing file URL

Todavía me gustaría administrar los archivos para algunas funciones, por ejemplo, colocar un archivo y obtener un archivo de Dropbox. Ahora el problema es cuando coloco algunos archivos en la carpeta pública de y necesito una URL para compartir con mis contactos en la aplicación. Pero en la API no pude encontrar ninguna función que devuelva la URL web del archivo para compartir (al igual que en la interfaz de Deskotop de Dropbox, un usuario puede obtener una URL compartida para enviar a amigos).

¿Podría alguien ayudarme a encontrar la manera de compartir ese archivo con los contactos en la aplicación?

¿O de otra forma compartir un archivo usando Dropbox Android API?

+1

He encontrado alguna documentación: https://www.dropbox.com/developers/docs ¿Se le refiriéndose a otra cosa? – KPthunder

+0

@KPthunder .. gracias por su respuesta ... he visto esta documentación ya que no hay un método mencionado para compartir esa es mi pregunta. gracias –

Respuesta

12

De acuerdo con los cambios realizados en Dropbox mencionado aquí: https://www.dropbox.com/help/16/en No habría más carpetas públicas, en su lugar el acceso a los archivos se puede hacer a través de Compartir enlace.

Si utiliza Android DropBox Core Api continuación enlace compartido se puede recuperar de esta manera:

// Get the metadata for a directory 
Entry dirent = mApi.metadata(mPath, 1000, null, true, null); 

for (Entry ent : dirent.contents) { 

String shareAddress = null; 
if (!ent.isDir) { 
    DropboxLink shareLink = mApi.share(ent.path); 
    shareAddress = getShareURL(shareLink.url).replaceFirst("https://www", "https://dl"); 
    Log.d(TAG, "dropbox share link " + shareAddress); 
} 
} 

ACTUALIZACIÓN: 20/07/2014 por Dheeraj Bhaskar Utilice la siguiente función auxiliar alongwith de la función anterior. Como DropBox comenzó a enviar enlaces abreviados, es un poco más problemático obtener un enlace adecuado. Por ahora, estoy usando este método:

Simplemente cargamos la URL, seguimos los redireccionamientos y obtenemos la nueva URL.

String getShareURL(String strURL) { 
    URLConnection conn = null; 
    String redirectedUrl = null; 
    try { 
     URL inputURL = new URL(strURL); 
     conn = inputURL.openConnection(); 
     conn.connect(); 

     InputStream is = conn.getInputStream(); 
     System.out.println("Redirected URL: " + conn.getURL()); 
     redirectedUrl = conn.getURL().toString(); 
     is.close(); 

    } catch (MalformedURLException e) { 
     Log.d(TAG, "Please input a valid URL"); 
    } catch (IOException ioe) { 
     Log.d(TAG, "Can not connect to the URL"); 
    } 

    return redirectedUrl; 
} 

Nota: Todo esto se debe hacer, por supuesto, en AsyncTask o hilo.Esto producirá enlaces adecuados listos para descargar

Actualizar 07/25/2014: Cambio en las URL compartir dropbox
un mano a mano en el tipo de URL a esperar
Desde el equipo de Dropbox:

Queremos informarle acerca de un próximo cambio en la estructura de URL de los enlaces compartidos de Dropbox . Si bien no forma parte de la API, el cambio podría afectar las aplicaciones que manipulan las URL devueltas desde el punto final /shares o el tipo de enlace de "vista previa" devuelto por el selector Drop-in.

Los enlaces devueltos ahora tendrán un? Dl = 0 agregado a ellos.

por ejemplo, en lugar de https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx, se le recibir URLs como este enlace https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx?dl=0.

+1

Función getShareURL actualizada. Tu método estaba bloqueando la aplicación con 'NullPointerException' porque ya no había un campo de encabezado llamado Ubicación. –

+1

Gracias por actualizar la respuesta – MP23

+0

getShareUrl da nulo, y DropBox genera este tipo de enlace https://db.tt/icnETNj1j. ¿Puedes sugerirme cómo resolver problemas de enlaces compartidos? –

0
+0

Muchas gracias por su respuesta. Muchas gracias ..., tengo un archivo pdf con el nombre "Getting Started" en mi raíz de Dropbox ... y probé esta URL http://dl.dropbox.com/u/mydropboxid/Getting Started .y no está funcionando, y que es 'u' en la URL? 'U' está antes que YOUR_DROPBOX_ID ... muchas gracias por su respuesta. gracias –

+0

@Ijaz Acabo de notar su comentario. Creo que es por el espacio. Pruebe http://dl.dropbox.com/u/yourId/Getting%20Started. No tengo idea de por qué el 'u', pero está ahí. – Aleadam

1

Un hilo útil en los foros de Dropbox:

http://forums.dropbox.com/topic.php?id=37700&replies=7#post-326432

si el enlace público para un archivo es siempre

dl.dropbox.com/u/<your users uid>/<path under /Public>/filename 

entonces podemos simplemente usa la API para obtener y construir la URL pública en el código.

Quizás esto también ayude: suba un archivo a Dropbox y copie la dirección pública. Este script carga un archivo en su directorio/Public y usa su cuenta UID para construir su URL pública. Luego, se hace eco de la URL a la consola.

https://github.com/sylvainfilteau/dropbox-api-command/commit/6aa817c79220c5de4ff5339cd01ea8b528bcac36

no estoy allí todavía en mi implementación de la interfaz de Dropbox, pero esta es una de las funciones que necesito para desarrollar. Más en uno o dos días, espero.

+0

Gracias por su respuesta, voy a comprobar y luego decir algo sobre él. No recibí tu último comentario, ¿a qué te refieres con "Más en uno o dos días, espero" ... la función está desarrollada para compartir o todavía estás en desarrollo? Gracias –

+0

Estoy desarrollando una herramienta para subir cualquier archivo a la carpeta pública del usuario en Dropbox y publicar el enlace a Facebook o sitios similares con un encabezado de texto estándar, publicaré el código aquí cuando haya terminado. –

+0

¿puedo usar la URL pública de Dropbox como fuente en HTML5: