Android 在第三方应用程序中打开PDF会导致TransactionTooLargeException

Android 在第三方应用程序中打开PDF会导致TransactionTooLargeException,android,Android,我有以下代码片段,可以在外部应用程序中打开PDF: Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", new File(path)); Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent

我有以下代码片段,可以在外部应用程序中打开PDF:

Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", new File(path));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(uri, "application/pdf");
context.startActivity(intent);
这将在Adobe Reader中打开PDF,但是我的应用程序也会因
TransactionTooLargeException
异常而崩溃

从外观上看,我只是通过intent发送文件URI和类型,因此StackOvrflow的1MB限制其他答案实际上并不适用

堆栈跟踪:

java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 20439376 bytes
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4211)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6688)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: android.os.TransactionTooLargeException: data parcel size 20439376 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:628)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:4132)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4203)
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6688) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 
我错过了什么


谢谢

我犯了这个错误,而PDF数据这件事是个麻烦事(PDF在应用程序从崩溃中启动时成功打开这一事实支持了这一点。)


在我的例子中,发生错误是因为我试图在activity onSaveInstanceState捆绑包中存储太多数据。我在op上得到了一个非常相似的堆栈跟踪。

请编辑问题并发布与此异常相关的整个Java堆栈跟踪。可能它发生在其他地方(例如,绑定到您保存的实例状态
Bundle
),这只是在此处调用
startActivity()
的结果。