2015-02-11 28 views

回答

2

試試這段代碼。

public void shareImageWhatsApp() { 

    Bitmap adv = BitmapFactory.decodeResource(getResources(), R.drawable.adv); 
    Intent share = new Intent(Intent.ACTION_SEND); 
    share.setType("image/jpeg"); 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    adv.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    File f = new File(Environment.getExternalStorageDirectory() 
      + File.separator + "temporary_file.jpg"); 
    try { 
     f.createNewFile(); 
     new FileOutputStream(f).write(bytes.toByteArray()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    share.putExtra(Intent.EXTRA_STREAM, 
      Uri.parse(Environment.getExternalStorageDirectory()+ File.separator+"temporary_file.jpg")); 
    if(isPackageInstalled("com.whatsapp",this)){ 
      share.setPackage("com.whatsapp"); 
      startActivity(Intent.createChooser(share, "Share Image")); 

    }else{ 

     Toast.makeText(getApplicationContext(), "Please Install Whatsapp", Toast.LENGTH_LONG).show(); 
    } 

} 

private boolean isPackageInstalled(String packagename, Context context) { 
    PackageManager pm = context.getPackageManager(); 
    try { 
     pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES); 
     return true; 
    } catch (NameNotFoundException e) { 
     return false; 
    } 
} 
+0

謝謝,我會嘗試! :) – blowyourbrain 2015-02-11 21:32:23

+3

你正在用'temporary_file.jpg'弄亂用戶外部存儲的根目錄。將文件放在'getExternalFilesDir()'中,或者更好的是通過'FileProvider'從內部存儲中提供文件。此外,您正在對包名稱進行硬編碼,這將不支持其他WhatsApp客戶端,包括Facebook/WhatsApp未來選擇發佈的其他任何客戶端名稱。 – CommonsWare 2015-02-11 21:43:08

+0

如果這個硬編碼包名稱如何改變與其他客戶端一起工作? – blowyourbrain 2015-02-11 21:47:48

相關問題