【问题标题】:NullPointer Exception when opening pdf (MUPDF Android)打开 pdf 时出现 NullPointer 异常(MUPDF Android)
【发布时间】:2014-07-16 12:24:28
【问题描述】:

我有一个库项目,即 MUPDF 渲染库。我正在使用我的名为 OPENER 的项目来要求库项目显示 pdf。像这样:

String s= Environment.getExternalStorageDirectory().getAbsolutePath().toString()+"/Download/Adobe Reader/Getting Started with Adobe Reader.pdf";
Uri uri = Uri.parse(s);

Intent intent = new Intent(getBaseContext(), MuPDFActivity.class);

intent.setAction(Intent.ACTION_VIEW);

intent.setData(uri);





startActivity(intent);

我认为 pdf 确实打开了(我永远看不到它),因为 Logcat 是这样说的:

07-16 12:21:02.678: D/dalvikvm(2317): 找不到 JNI_OnLoad /data/data/com.example.opener/lib/libmupdf.so 0xa6ac31c8,跳过 初始化 07-16 12:21:02.690: E/libmupdf(2317): 打开文档... 07-16 12:21:02.706: I/alert(2317): alert_init 07-16 12:21:02.706: E/libmupdf(2317): 完成! 07-16 12:21:02.738: D/dalvikvm(2317): GC_CONCURRENT 释放 181K,3% 释放 8176K/8391K,暂停 13ms+0ms,总计 22毫秒

但是在上面的消息之后,我得到了一个 nullpointerException。以下是完整的错误信息:

07-16 12:21:02.830: E/AndroidRuntime(2317): FATAL EXCEPTION: main
07-16 12:21:02.830: E/AndroidRuntime(2317): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.opener/com.artifex.mupdflib.MuPDFActivity}: java.lang.NullPointerException
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.os.Looper.loop(Looper.java:137)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.ActivityThread.main(ActivityThread.java:4745)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at java.lang.reflect.Method.invokeNative(Native Method)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at java.lang.reflect.Method.invoke(Method.java:511)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at dalvik.system.NativeStart.main(Native Method)
07-16 12:21:02.830: E/AndroidRuntime(2317): Caused by: java.lang.NullPointerException
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.artifex.mupdflib.CallbackApplication$MuPDFCallbackClass.sendGaiView(CallbackApplication.java:16)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.artifex.mupdflib.MuPDFActivity.updatePageNumView(MuPDFActivity.java:966)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.artifex.mupdflib.MuPDFActivity.access$5(MuPDFActivity.java:949)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.artifex.mupdflib.MuPDFActivity$4.onMoveToChild(MuPDFActivity.java:430)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.artifex.mupdflib.ReaderView.setDisplayedViewIndex(ReaderView.java:94)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.artifex.mupdflib.MuPDFActivity.createUI(MuPDFActivity.java:654)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at com.artifex.mupdflib.MuPDFActivity.onCreate(MuPDFActivity.java:396)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.Activity.performCreate(Activity.java:5008)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
07-16 12:21:02.830: E/AndroidRuntime(2317):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)

出了什么问题,我哪里出错了?

【问题讨论】:

  • 你调试过代码吗?
  • 我从github下载了代码。github.com/joniks/Android-MuPDF
  • 这不能回答我的问题。
  • 不,我没有,我需要从哪里开始调试的帮助
  • 我已将上述问题告知作者

标签: java android pdf nullpointerexception rendering


【解决方案1】:
String s=Environment.getExternalStorageDirectory().getAbsolutePath().toString()+"/Download/AdobeReader/Getting Started with Adobe Reader.pdf";
Uri uri = Uri.parse(s);

Intent intent = new Intent(getBaseContext(), MuPDFActivity.class);

intent.setAction(Intent.ACTION_VIEW);

intent.setData(uri);



//if document protected with password
intent.putExtra("password", "PDF document password");

//if you need highlight link boxes
intent.putExtra("linkhighlight", true);

//if you don't need device sleep on reading document
intent.putExtra("idleenabled", false);

//document name
intent.putExtra("docname", "PDF document file name");




startActivity(intent);

【讨论】:

  • 请尝试最新提交
  • 它工作! ,我想投票并接受你的答案,但现在真的没有“答案”。您可以发布您从提交中所做的更改吗?
  • 但是如果你从 sdcard 中选择路径,它就不起作用。你能提供解决方案吗?
猜你喜欢
  • 2014-02-06
  • 2021-08-17
  • 2015-04-23
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多