【问题标题】:Start a pdf viewer application from my android application从我的 android 应用程序启动一个 pdf 查看器应用程序
【发布时间】:2016-07-21 14:16:46
【问题描述】:

我正在尝试通过 android 中已安装的 pdf-viewer 打开一个 pdf 文件。

参考链接“android: open a pdf from my app using the built in pdf viewer

这里是示例代码:

private void openPDF(String filePath)
{
    Intent target = new Intent(Intent.ACTION_VIEW);
    target.setDataAndType(Uri.parse(filePath),"application/pdf");
    target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

    Intent intent = Intent.createChooser(target, "Open File");
    if(intent!=null)
    {
        try {
            startActivity(intent); // Here it giving null pointer exception 
        }
        catch (ActivityNotFoundException e) {
        // Instruct the user to install a PDF reader here, or something
        }
    }
    else
        Log.d("DEBUG","Intent is null");
} 

但是我在 startActivity(intent) 行上得到一个空指针异常。

请帮我找出问题。

堆栈跟踪:

01-28 16:24:48.865: W/System.err(4399): java.lang.NullPointerException
01-28 16:24:48.875: W/System.err(4399):     at android.app.Activity.startActivityForResult(Activity.java:3370)
01-28 16:24:48.875: W/System.err(4399):     at android.app.Activity.startActivityForResult(Activity.java:3331)
01-28 16:24:48.875: W/System.err(4399):     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:819)
01-28 16:24:48.875: W/System.err(4399):     at android.app.Activity.startActivity(Activity.java:3566)
01-28 16:24:48.875: W/System.err(4399):     at android.app.Activity.startActivity(Activity.java:3534)
01-28 16:24:48.875: W/System.err(4399):     at a.MainActivity.openPDF(MainActivity.java:591)
01-28 16:24:48.875: W/System.err(4399):     at a.MainActivity.access$0(MainActivity.java:581)
01-28 16:24:48.885: W/System.err(4399):     at a.MainActivity$TestSectionFragment$1.onItemClick(MainActivity.java:480)

【问题讨论】:

    标签: android pdfviewer


    【解决方案1】:

    你试试?

     Intent intent = new Intent();                      
     intent.setClassName("com.adobe.reader", "com.adobe.reader.AdobeReader");
     intent.setAction(android.content.Intent.ACTION_VIEW);
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
     Uri uri = Uri.fromFile(file);
     intent.setDataAndType(uri, "application/pdf");
    
    try {                               
        startActivity(intent);
        } catch (Exception e) {
    
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("No Application Found");
    builder.setMessage("Download Application from Android Market?");
    builder.setPositiveButton("Yes, Please",new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog,int which) {
    
            Intent marketIntent = new Intent(Intent.ACTION_VIEW);
            marketIntent.setData(Uri.parse("market://details?id=com.adobe.reader"));
    
            startActivity(marketIntent);
            }
        });
        builder.setNegativeButton("No, Thanks",null);
        builder.create().show();
        }
    

    【讨论】:

    • 当我在另一个活动中使用该代码并启动该活动时,它正在工作,但是有了一个活动,您也会得到一个视图部分。我不想要那个,所以我将代码移动到同一个文件。然后它开始崩溃。
    • @Jeet 我不明白。给我简要的细节
    • 之前我在其他扩展Activity的类中写了相同的代码,然后我在MainActivity本身中移动了相同的代码。它开始崩溃了。
    • @Jeet 崩溃日志请。显示MainActivity.java 中的480 行号并检查您的filePath
    • 得到了问题。这是因为我试图创建 MainActivity 对象,然后调用类中编写的方法。这种方法有什么问题吗?
    【解决方案2】:

    希望对你有帮助,

    Intent intent = new Intent(Intent.ACTION_VIEW,
            Uri.parse("path-to-document"));
    intent.setType("application/pdf");
    PackageManager pm = getPackageManager();
    List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);
    if (activities.size() > 0) {
        startActivity(intent);
    } else {
        // Do something else here. Maybe pop up a Dialog or Toast
    }
    

    请试试这个link: http://stackoverflow.com/questions/10299839/how-to-read-pdf-in-my-android-application

    【讨论】:

      【解决方案3】:

      替换下面的行:

       startActivity(intent);
      

      与:

      if (intent.resolveActivity(context.getPackageManager()) != null) {
          startActivity(intent);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 2011-01-26
        • 1970-01-01
        相关资源
        最近更新 更多