Estoy siguiendo este tutorial para compartir tweet + imagen en twitter. https://docs.fabric.io/android/twitter/compose-tweets. html

Está funcionando perfectamente para compartir texto en Twitter con respuesta de éxito y falla, pero no puedo compartir la imagen, ¿alguien me guía, ¿qué error estoy cometiendo aquí?

Nota: cuando comparto una imagen de la carpeta dibujable de la aplicación, se carga, pero tengo que descargar la imagen de Internet y luego guardarla en el almacenamiento interno.

Mi código comentado a continuación de explica claramente que la imagen se guarda en el almacenamiento interno cuando la probé.

public void composetweet()
{
    File myDir = getFilesDir();
    File savedImage = new File(myDir + "/text/","test.jpg");

   /* if(savedImage.exists()){

        Bitmap myBitmap = BitmapFactory.decodeFile(savedImage.getAbsolutePath());

        ImageView myTestImage = (ImageView) findViewById(R.id.myimageview);

        myTestImage.setImageBitmap(myBitmap);

    }*/

    Uri myImageUri = Uri.fromFile(savedImage);
    Intent intent = new TweetComposer.Builder(this)
            .text("just setting up my Fabric.")
            .image(myImageUri)
            .createIntent();
    startActivityForResult(intent, TWEET_COMPOSER_REQUEST_CODE);

}
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == TWEET_COMPOSER_REQUEST_CODE) {

            if(resultCode == Activity.RESULT_OK) {

               // onTwitterSuccess();

            } else if(resultCode == Activity.RESULT_CANCELED) {

               // onTwitterCancel();
            }
        }

    }

También he intentado:

Uri myImageUri = Uri.fromFile(savedImage);
  TweetComposer.Builder builder = new TweetComposer.Builder(this)
                .text("just setting up my Fabric.")
                .image(myImageUri);
builder.show();

Pero no suerte.
¿Algunas ideas?

0
UMAR-MOBITSOLUTIONS 15 dic. 2016 a las 22:15

2 respuestas

La mejor respuesta

Después de investigar un poco, encontré:

  • cuando esté guardando datos en el almacenamiento interno de su aplicación e intente recogerlos dentro de la misma aplicación, funcionará.

Pero si desea compartir ese archivo creado desde su aplicación en otra aplicación, el almacenamiento interno no le dará permisos.

Por lo tanto, seguí esta solución para que eso funcione:

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.mobitsolutions.socialmediashare.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/pathfile"/>
        </provider>
0
UMAR-MOBITSOLUTIONS 16 dic. 2016 a las 11:03

La imagen Uri debe ser un archivo Uri (es decir, esquema file://absolute_path) en un archivo local. Por ejemplo:

File myImageFile = new File("/path/to/image");
Uri myImageUri = Uri.fromFile(myImageFile);

Intente recuperar la ruta de la imagen con la ruta absoluta, también hay otra opción para configurar la tarjeta de Twitter.

https://dev.twitter.com/cards/types/app

0
Vadim Kotov 4 ago. 2017 a las 14:19