2016-08-31 2 views
1

Как можно разместить полное загруженное изображение, установленное в ImageView вместе с текстом в приложение Whats с использованием намерений и Glide ..... Я смотрел много, но я только нашел для Пикассо библиотеки здесь является link или если ссылка мертва Google эта фраза:Как поделиться изображением и текстом прямо в приложении Whats в Android-java, используя библиотеку Glide

Совместное использование содержимого с Intents · codepath_android_guides Wiki.htm

+0

Перекресток https://github.com/bumptech/glide/issues/1439 – TWiStErRob

ответ

1

я нашел рабочего решения для моей проблемы после прочтения на глиссаде и в кеше в Picasso, так что логика, которую я получил, была: Когда скольжение загружает изображение успешно, тогда установите растровое изображение в изображение, а затем, так как изображение было кэшировано, используйте кешированное изображение и используйте изображение, как если бы оно было обычным образом, а затем передало его в намерение совместного использования, которое вы или я бы определил. код: EventfaceImage является ImageView я определен,

Glide.with(context).load(uri).asBitmap().diskCacheStrategy(DiskCacheStrategy.ALL) 
      .dontAnimate().into(new BitmapImageViewTarget(EventfaceImage) { 
     @Override 
     public void onResourceReady(final Bitmap bmp, GlideAnimation anim) { 
      share.setVisibility(View.VISIBLE); 
      EventfaceImage.setImageBitmap(bmp); 
      share.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        menu_float.close(true); 
        prepareShareIntent(bmp); 
       } 
      }); 
     } 
     @Override 
     public void onLoadFailed(Exception e, Drawable errorDrawable) { 
      super.onLoadFailed(e, errorDrawable); 
     } 
    }); 

затем prepareShareIntent(); метод

private void prepareShareIntent(Bitmap bmp) { 
    Uri bmpUri = getLocalBitmapUri(bmp); // see previous remote images section 
    // Construct share intent as described above based on bitmap 

    shareIntent = new Intent(); 
    shareIntent.setPackage("com.whatsapp"); 
    shareIntent.setAction(Intent.ACTION_SEND); 

    shareIntent.putExtra(Intent.EXTRA_TEXT, getResources().getString(R.string.shared_via) ); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri); 
    shareIntent.setType("image/*"); 
    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    startActivity(Intent.createChooser(shareIntent, "Share Opportunity")); 

} 
private Uri getLocalBitmapUri(Bitmap bmp) { 
    Uri bmpUri = null; 
    File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png"); 
    FileOutputStream out = null; 
    try { 
     out = new FileOutputStream(file); 
     bmp.compress(Bitmap.CompressFormat.PNG, 90, out); 
     try { 
      out.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     bmpUri = Uri.fromFile(file); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return bmpUri; 
} 

Это работает для меня в API 22 .so я надеюсь, что это поможет кому-то, но я не проверял во всех АФИ в андроиде, если оленья кожа, пожалуйста, дайте мне знать, и я посмотрю, что я могу хак. также не стесняйтесь улучшать код и делиться тем, что работает для вас тоже

+0

Используете ли вы SD-карту для хранения изображений снаружи? – nocholla

+0

@nocholla да, вы можете хранить на SD-карте, но Android-по умолчанию будет основной памятью, где в большинстве случаев он будет хранить в памяти телефона, особенно в Android 22 +, если вы хотите хранить на кеше sd-карты, вам понадобится разрешение на Android 23 + во время выполнения. –

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