2017-06-20 53 views
0

我每個人,我有一個問題。我必須從我的應用程序發送圖像到whatsapp。我以位圖格式下載了圖像。在以JPG格式轉換位圖格式後,我嘗試發送圖像。但WhatsApp沒有收到任何數據。通過我的應用程序發送圖像到whatsapp

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.setType("image/jpeg"); 

Bitmap bmp = getBitmap(); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream); 

File f = new File(getAppContext().getCacheDir() + File.separator + "temporary_file.jpg"); 
try { 
     f.createNewFile(); 
     FileOutputStream fo = new FileOutputStream(f); 
     fo.write(stream.toByteArray()); 
     fo.flush(); 
     fo.close(); 
} catch (IOException e) { 
     e.printStackTrace(); 
} 

shareIntent.putExtra(Intent.EXTRA_STREAM, f.getPath()); 
myShareActionProvider.setShareIntent(shareIntent); 

我已經插入到清單中的所有權限。 我該如何解決? 謝謝。

PS。我使用min sdk 17和max sdk 24

+0

https://stackoverflow.com/a/44639312/115145 – CommonsWare

回答

1

WhatsApp無法訪問getCacheDir()返回的目錄,只有您的應用程序可以。嘗試做這樣的代替:

File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg"); 

對於這個工作,你需要聲明WRITE_EXTERNAL_STORAGE許可,您的manifest.xml文件。就像這樣:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

我試圖創建一個使用Environment.getExtrnalStorageDirectory()的文件,但是當我嘗試createNewFile()返回IOException的權限被拒絕 – apollo9

+0

因爲您需要將WRITE_EXTERNAL_STORAGE權限添加到manifest.xml文件中,所以我將編輯答案。 – Tharkius

相關問題