【发布时间】:2022-01-19 02:35:48
【问题描述】:
我正在开发应用程序以从 Webview 将 PDF 文件加载到新的 PDF 活动中 使用意图和 PdfViewer.jar 库。我知道无法在 Webview 中打开 PDF 文件,但尝试在 activity_pdf.xml 中打开 当我单击 Webview 中的链接时,我的应用程序无法调用 PdfViewer.class 并崩溃,这可能是什么原因。请帮助我被困在这里。 代码看起来不错,没有错误。
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(PdfActivity.this,PdfViewer.class);
final Uri uri = PdfActivity.this.getIntent().getData();
URL pdfurl = null;
try {
pdfurl = new URL(uri.getScheme(), uri.getHost(), uri.getPath());
} catch (MalformedURLException e) {
e.printStackTrace();
}
intent.putExtra("PDFURL", pdfurl);
startActivity(intent);
System.out.println("PDF WORKING");
return super.shouldOverrideUrlLoading(view, url);
}
参考我的 Logcat 错误
2022-01-19 04:17:12.401 22159-22159/ak.wp.meto E/AndroidRuntime: FATAL EXCEPTION: main
Process: ak.wp.meto, PID: 22159
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getScheme()' on a null object reference
at ak.wp.meto.activity.PdfActivity$MyWebViewClient.shouldOverrideUrlLoading(PdfActivity.java:90)
at android.webkit.WebViewClient.shouldOverrideUrlLoading(WebViewClient.java:83)
at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(Unknown Source:90)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loop(Looper.java:206)
at android.app.ActivityThread.main(ActivityThread.java:8595)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
这行的错误是什么?我在这一行收到 logcat 错误。请帮忙
pdfurl = new URL(uri.getScheme(), uri.getHost(), uri.getPath());
我正在使用 PdfViewer.jar 库,在 README 文本中提到使用,请参阅下面的链接供您参考, https://sourceforge.net/p/andpdf/code/HEAD/tree/tag/Beta_0_1_11/AndroidPdfViewer/activitysrc/net/sf/andpdf/
【问题讨论】:
-
我对您的代码有一些疑问,您如何将链接映射为 pdf 以重新启动活动?
标签: android android-studio android-intent webview nullpointerexception