2016-09-21 47 views
3

我想與像whatsapp這樣的可用應用程序共享.gif,但無法在我的可繪製資源中獲得有效的UIF。如何使用意向共享將gif圖像共享到可用的應用程序?

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); 

有很多的解決方案上共享圖像,但在分享GIF無解,請幫忙

回答

7

我發現我的答案, 對於GIF我只需要創建一個文件,擴展名爲.gif和它的工作對我來說:)

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

如果什麼GIF是在服務器上? –

+0

@ButaniVijay:本地下載gif,然後分享相同的代碼:) –

+0

幹得好。保存我的一天:) –

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"));