2015-02-11 5 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

+3

Вы заглушаете корень внешнего хранилища пользователя с помощью 'tempor_file.jpg'. Либо поместите файл в 'getExternalFilesDir()', либо, тем лучше, сохраните файл из внутреннего хранилища через 'FileProvider'. Кроме того, вы жестко кодируете имя пакета, которое не будет поддерживать другие клиенты WhatsApp, включая любые другие, которые Facebook/WhatsApp издает для публикации в будущем. – CommonsWare

+0

если это имя пакета жесткого кода, как изменить работу с другими клиентами? – blowyourbrain

Смежные вопросы