2016-09-21 2 views
3

Je veux travailler sur le partage. Gif avec des applications disponibles comme WhatsApp, mais incapable d'obtenir un URI valide de GIF présent dans ma ressource drawable.comment partager des images gif en utilisant le partage d'intention vers les applications disponibles?

Uri path = Uri.parse("android.resource://my_package_name/" + R.drawable.gif_1); 
    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
    shareIntent.setType("image/gif"); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, path); 

il y a beaucoup de solution sur partage d'images, mais pas de solution sur le partage gif, S'il vous plaît aider

Répondre

7

J'ai trouvé ma réponse, Pour GIF je viens de créer un fichier, avec l'extension .gif, et cela a fonctionné pour moi :)

private void shareGif(String resourceName){ 

    String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    String fileName = "sharingGif.gif"; 

    File sharingGifFile = new File(baseDir, fileName); 

    try { 
     byte[] readData = new byte[1024*500]; 
     InputStream fis = getResources().openRawResource(getResources().getIdentifier(resourceName, "drawable", getPackageName())); 

     FileOutputStream fos = new FileOutputStream(sharingGifFile); 
     int i = fis.read(readData); 

     while (i != -1) { 
      fos.write(readData, 0, i); 
      i = fis.read(readData); 
     } 

     fos.close(); 
    } catch (IOException io) { 
    } 
    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
    shareIntent.setType("image/gif"); 
    Uri uri = Uri.fromFile(sharingGifFile); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
    startActivity(Intent.createChooser(shareIntent, "Share Emoji")); 
+0

si gif est sur le serveur? –

+0

@ButaniVijay: télécharger gif localement et ensuite partager avec le même code :) –

+0

Bravo. Sauvé ma journée :) –

0
if you want to take image from internal storage. 

//this is method having internal storage path. 
private String getFilePath2() { 
    String root = Environment.getExternalStorageDirectory().toString(); 
    File myDir = new File(root + "/Gifs temp/"); 
    if (!myDir.exists()) 
     myDir.mkdirs(); 
    String fname = "temp_gif"; 
    SimpleDateFormat timeStampFormat = new SimpleDateFormat(
      "yyyyMMdd_HHmmss"); 
    Date myDate = new Date(); 
    String filename = timeStampFormat.format(myDate); 
    File file = new File(myDir, fname + "_" + filename + ".gif"); 
    if (file.exists()) { 
     file.delete(); 
    } 
    String str = file.getAbsolutePath(); 
    return str; 
} 




// Then take image from internal storage into the string. 
    String st = getFilePath2(); 




//And share this by this intent 
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
          shareIntent.setType("image/gif"); 
          Uri uri = Uri.fromFile(sharingGifFile); 
          shareIntent.putExtra(Intent.EXTRA_STREAM,   
    uri); 

    startActivity(Intent.createChooser(shareIntent, "Share Emoji"));