Mi aplicación envía archivos (todos los tipos de mime) a través de una conexión TCP y, por lo tanto, quería que mi aplicación apareciera en el menú Compartir de Android.Práctica recomendada: agregar su aplicación al menú Compartir de Android
que añaden los siguientes filtros intención de mi actividad en AndroidManifest.xml
<intent-filter ><!--intent filter for single file sharing-->
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter ><!--intent filter for sharing multiple files-->
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
Ahora he añadido esto a la Activity
que va a ser lanzado al hacer clic en el Compartir Acción
Intent intent = getIntent();
if (Intent.ACTION_SEND.equals(intent.getAction()))
{
Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (uri != null) {
fileset = new HashSet();
fileset.add(getPathfromUri(uri));
}
}
else if (Intent.ACTION_SEND_MULTIPLE.equals(intent.getAction()))
{
ArrayList<Uri> uris= intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if (uris != null) {
fileset = new HashSet();
for(Uri uri : uris)
{
fileset.add(getPathfromUri(uri));
}
}
}
utilizo este método para generar las rutas absolutas de los archivos que se van a compartir.
public String getPathfromUri(Uri uri) {
if(uri.toString().startsWith("file://"))
return uri.getPath();
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String path= cursor.getString(column_index);
//cursor.close();
return path;
}
El método anterior recupera correctamente la ruta absoluta de imágenes/vídeos y otros files.Is Hay algo que has perdido o hay una mejor manera de hacer esto?
Además del menú Share
, hay un menú Send Via
en mi teléfono.
¿Hay alguna manera de incluir mi aplicación en esta lista?
AFAIK, solo hay un menú "Compartir". Esa lista puede ser personalizada, ya que esperaría que Facebook, G +, Twitter aparezcan en esa lista, de lo contrario, si los tiene instalados. –
Yo también creo que los que están en la lista son las aplicaciones predeterminadas que vienen con la ROM. Eso debe ser algo que Samsung ha agregado :) Gracias por aclarar – coderplus
¿Has probado esto? intent.setType ("*/*"); – jzafrilla