2015-01-08 2 views
0

Мой вопрос: как я могу отправить битмап в приложение Whastapp, и я использую ниже код;Как отправить растровое изображение в приложение WhatsApp

ImageView iv=(ImageView)view.findViewById(R.id.item_image); 
Bitmap bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap(); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 

PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA); 
//Check if package exists or not. If not then code 
//in catch block will be called 
waIntent.setPackage("com.whatsapp"); 
waIntent.setType("image/png"); 
waIntent.putExtra(Intent.ACTION_SEND, byteArray); 
startActivity(Intent.createChooser(waIntent, "Share with")); 

Но этот код не работал. Какая у меня ошибка? Благодарю.

+0

Вы можете поместить 'Bitmap' непосредственно в' 'Intent' в Bundle' с помощью' putParcelable() ' –

+0

@abforce Пожалуйста, вы можете дать пример – Ozan

+0

http://stackoverflow.com/questions/2459524/how-can-i-pass-a-bitmap-object-from-one-activity-to-another –

ответ

1

Это работает для меня:

public void onClickApp(String pack, Bitmap bitmap) { 
    PackageManager pm = context.getPackageManager(); 
    try { 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
     String path = MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, "Title", null); 
     Uri imageUri = Uri.parse(path); 

     @SuppressWarnings("unused") 
     PackageInfo info = pm.getPackageInfo(pack, PackageManager.GET_META_DATA); 

     Intent waIntent = new Intent(Intent.ACTION_SEND); 
     waIntent.setType("image/*"); 
     waIntent.setPackage(pack); 
     waIntent.putExtra(android.content.Intent.EXTRA_STREAM, imageUri); 
     waIntent.putExtra(Intent.EXTRA_TEXT, pack); 
     context.startActivity(Intent.createChooser(waIntent, "Share with")); 
    } catch (Exception e) { 
     Log.e("Error on sharing", e + " "); 
     Toast.makeText(context, "App not Installed", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

Вы всегда используете фрагменты кода для обычного кода. Фрагменты кода должны использоваться только для HTML или javascript или другого кода, который может быть запущен в браузере. Вы не можете запускать Java в браузере. В будущем используйте обычные кодовые блоки ... На этот раз я отредактирую ваш ответ и исправлю форматирование и т. Д., Но, пожалуйста, не делайте этого больше в будущем. Это не первый раз, когда я рассказывал вам об этом ... –

+0

Для этого требуется разрешение writeexternalstorage, как это сделать без –

-1
//pass your image and text(if you want to share) in this method. 
    void shareImage(Bitmap bitmap,String text){ 
    //bitmap is ur image and text is which is written in edtitext 
    //you will get the image from the path 
    String pathofBmp= 
    MediaStore.Images.Media.insertImage(getContentResolver(), 
    bitmap,"title", null);  
    Uri uri = Uri.parse(pathofBmp); 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("image/*"); 
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Star App"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, text); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
    startActivity(Intent.createChooser(shareIntent, "hello hello")); 
} 
Смежные вопросы