【问题标题】:Sharing bitmap to other apps将位图共享到其他应用程序
【发布时间】:2017-02-27 12:30:59
【问题描述】:

在我的应用程序中,我使用 LruCache 从缓存中的 url 保存位图。但是当我尝试将位图共享给其他应用程序时,我无法发送位图。谁能告诉我是什么问题?

我的错误日志是

Caused by: android.os.TransactionTooLargeException: data parcel size 11700720 bytes
                                                                  at android.os.BinderProxy.transactNative(Native Method)
                                                                  at android.os.BinderProxy.transact(Binder.java:615)
                                                                  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3114)
                                                                  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1520)
                                                                  at android.app.Activity.startActivityForResult(Activity.java:4234) 
                                                                  at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48) 
                                                                  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:77) 
                                                                  at android.app.Activity.startActivityForResult(Activity.java:4192) 
                                                                  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859) 
                                                                  at android.app.Activity.startActivity(Activity.java:4531) 
                                                                  at android.app.Activity.startActivity(Activity.java:4499) 
                                                                  at me.entri.entrime.utils.Utils.showShareIntent(Utils.java:113) 
                                                                  at me.entri.entrime.fragments.ResultsFragment$4.onClick(ResultsFragment.java:237) 
                                                                  at android.view.View.performClick(View.java:5637) 

【问题讨论】:

标签: android


【解决方案1】:

TransactionTooLargeException :

Binder 事务缓冲区有一个有限的固定大小,目前为 1Mb, 该进程的所有正在进行的事务共享。 因此,当有很多 即使大多数个别交易仍在进行中 大小适中。

您应该将图像的 URI 传递给意图,而不是传递位图本身。 如果您不想使用外部存储,则可以参考建议: https://stackoverflow.com/a/33182408/4644823

【讨论】:

  • 我将图像放入 Lrucache。如何获取缓存图片的uri?
  • 您确实将位图下载到您的外部存储设备中吗?如果您不这样做,则建议先下载它,然后将其添加到 Lrucache。下载后即可获取URI。
  • 像 getActivity().getFilesDir(); 这样保存图像怎么样? ?我以后可以访问这些图像吗?
  • 不,您不能使用它来访问您的存储。 http://stackoverflow.com/a/21230946/4644823你应该使用getExternalStorageDirectory()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 2022-11-15
相关资源
最近更新 更多