new - textarea java netbeans




¿Cómo puedo compartir múltiples archivos a través de un Intento? (2)

Aquí hay una pequeña versión mejorada improvisada por la solución de MCeley. Esto podría usarse para enviar la lista de archivos heterogéneos (como imágenes, documentos y videos al mismo tiempo), por ejemplo, cargar documentos descargados, imágenes al mismo tiempo.

public static void shareMultiple(List<File> files, Context context){

    ArrayList<Uri> uris = new ArrayList<>();
    for(File file: files){
        uris.add(Uri.fromFile(file));
    }
    final Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    intent.setType("*/*");
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
    context.startActivity(Intent.createChooser(intent, context.getString(R.string.ids_msg_share)));
}

Aquí está mi código, pero esto es para una solución de archivo único.

¿Puedo compartir varios archivos y cargas como hago para los archivos individuales a continuación?

Button btn = (Button)findViewById(R.id.hello);

    btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_SEND);

                String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/pic.png";
                File file = new File(path);

                MimeTypeMap type = MimeTypeMap.getSingleton();
                intent.setType(type.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(path)));

                intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
                intent.putExtra(Intent.EXTRA_TEXT, "1111"); 
                startActivity(intent);
            }
        }); 

Sí, pero deberá usar Intent.ACTION_SEND_MULTIPLE lugar de Intent.ACTION_SEND .

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putExtra(Intent.EXTRA_SUBJECT, "Here are some files.");
intent.setType("image/jpeg"); /* This example is sharing jpeg images. */

ArrayList<Uri> files = new ArrayList<Uri>();

for(String path : filesToSend /* List of the files you want to send */) {
    File file = new File(path);
    Uri uri = Uri.fromFile(file);
    files.add(uri);
}

intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, files);
startActivity(intent);

Esto definitivamente podría simplificarse, pero dejé algunas líneas para que pueda desglosar cada paso que se necesita.

ACTUALIZACIÓN : Comenzando en API 24, el intercambio de URI de archivos provocará una FileUriExposedException. Para remediar esto, puede cambiar su compileSdkVersion a 23 o menos o puede usar URI de contenido con FileProvider .

ACTUALIZACIÓN (a la actualización) : Google anunció recientemente que se requerirán nuevas aplicaciones y actualizaciones de aplicaciones para apuntar a una de las últimas versiones de Android para su lanzamiento en Play Store. Dicho esto, apuntar a API 23 o inferior ya no es una opción válida si planea lanzar la aplicación a la tienda. Debe ir a la ruta FileProvider.





android-intent