2015-05-07 21 views
9

Basit bir soru, bir resmin bir bitmap oluşturmak ve Action_Send aracılığıyla paylaşmak için kod kurmak. Paylaşıldığında, doğru görüntü gönderilir, ancak mesaj alanında görüntülenen resmin önizlemesi (metin ile gönderiyorsanız) daha önce paylaşılan bir öğeyi gösterir. Önizlemeyi yenilemek için zorlamanın bir yolu var mı? Aşağıda, bahsettiğim alanı gösteren bir görüntü var. Önizleme şu anda paylaşılan görüntü değil, pek çok paylaşımdan bir öncekinden daha önce hiç temizlenmemiş.Android Share Resim Önizleme Önceden Paylaşılan bir öğeden Önizleme yok

http://i.stack.imgur.com/dT78Z.png

private Intent getShareIntent() 
{ 
Intent shareIntent = new Intent(Intent.ACTION_SEND); 
File sdCard = Environment.getExternalStorageDirectory(); 
File sharedFile = new File(sdCard+"/SaveDirectory/mypicture.png"); 
Uri uri = Uri.fromFile(sharedFile); 
shareIntent.setType("image/*"); 
shareIntent.putExtra(Intent.EXTRA_STREAM, uri); return shareIntent; 
} 
+0

kodunuzu .. –

+0

özel Niyet getShareIntent() { Niyet shareIntent = new Niyet (Intent.ACTION_SEND) sonrası; Dosya sdCard = Ortam.getExternalStorageDirectory(); Dosya paylaşımıFile = new Dosya (sdCard + "/ SaveDirectory/mypicture.png"); Uri uri = Uri.fromFile (sharedFile); shareIntent.setType ("image/*"); shareIntent.putExtra (Intent.EXTRA_STREAM, uri); return shareIntent; } Bu kod çok dağınık, mobilde – jagrakye

+0

Kodu düzelttim, şimdi biraz daha iyi görünmeli. Düşüncesi olan var mı? – jagrakye

cevap

4

Ben aynı sorunu gördüm. Bu sorun yalnızca google'ın tutun, g + vb. Uygulamaları gibi birkaç uygulama için mevcut.

Bu uygulamalar, dosya aynıysa önizlemeyi korur. Neden böyle bir varsayım yaptığını bilmiyorum. Kısacası, önizleme dosya başına korunur ve dosya değiştirildikten sonra bile güncellenmez. Bu uygulamaları düzeltebiliriz, dolayısıyla çözüm aynı dosyanın güncellenmesini önlemektir.

File.createTempFile()'u kullanarak yeni bir benzersiz dosya oluşturulmasını sağlayan bir geçici dosya oluşturun. Bu şekilde önizleme güncellenir.

Durumumda bu geçici dosyaları önbellek dir (getCacheDir() veya getExternalCacheDir()) olarak oluşturdum ve önbelleği onDestroy() temizledim.

İlgili konular