studio putextra intent intenciones desde boton activity abrir android android-intent

putextra - intentfilter android



Práctica recomendada: agregar su aplicación al menú Compartir de Android (3)

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.

Agregué los siguientes filtros de intención a 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 agregué esto a la Activity que se lanzará al hacer clic en 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 adecuadamente la ruta absoluta de Imágenes / Videos y otros archivos. ¿Hay algo que me he perdido o hay una mejor manera de hacerlo?

Además del menú Share , hay un menú Send Via en mi teléfono.

¿Hay alguna forma de incluir mi aplicación en esta lista?


Creo que estás compartiendo las imágenes desde fuera de la aplicación. Por favor, defina el minetipo en intentfiler. está funcionando bien en el lado mío.

<activity android:name=".SharePhotoFromOutSide" android:theme="@android:style/Theme.Translucent.NoTitleBar" > <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="photo/*" /> </intent-filter> </activity>


Lo describí aquí cómo ingresar al menú:

http://blog.blundellapps.com/add-your-app-to-the-android-menu/

Básicamente es tener tu mimetype / :

<intent-filter> <action android:name="android.intent.action.GET_CONTENT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> </intent-filter>

Si haces eso y no aparece, significa que están usando un menú de intención y es una lista de recursos compartidos personalizada para que no puedas entrar a la fuerza.


Traté de lidiar con este problema y estoy bastante seguro de que la galería de Samsung usa alguna acción personalizada para compartir a través de ese menú. Teniendo en cuenta que todas las aplicaciones enumeradas están preinstaladas, es obvio que Samsung estuvo de acuerdo con todos los desarrolladores de aplicaciones mencionados para usar su acción de intención personalizada.

También intenté contactar a Samsung y aún no me respondieron.