从android应用程序打开epub文件

从android应用程序打开epub文件,android,epub,Android,Epub,我正在尝试使用Moon Reader从我的android应用程序打开一个epub文件。代码如下。我在日志中得到一个错误,如下所示: 11-26 16:57:01.237:E/Web控制台(12254):未捕获错误:在NPObject上调用方法时出错:5914 你能告诉我问题出在哪里吗 public void openEpub(String url) { Intent intent = null; Uri uri = null; try { intent =

我正在尝试使用Moon Reader从我的android应用程序打开一个epub文件。代码如下。我在日志中得到一个错误,如下所示: 11-26 16:57:01.237:E/Web控制台(12254):未捕获错误:在NPObject上调用方法时出错:5914

你能告诉我问题出在哪里吗

public void openEpub(String url)
{
    Intent intent = null;
    Uri uri = null;
    try {
        intent = new Intent(Intent.ACTION_VIEW);
        uri = Uri.parse(url);
        intent.setDataAndType(uri, "application/epub+zip");
    } catch (Exception e) {
        e.printStackTrace();
    }


    try {
        //startActivity(intent);
        PackageManager pm = getPackageManager();
        try
        {
            String packageName = "com.flyersoft.moonreader";
            Intent launchIntent = pm.getLaunchIntentForPackage(packageName);
            launchIntent.setAction(Intent.ACTION_VIEW);
            launchIntent.setData(uri);
            startActivity(launchIntent);
        }
        catch (Exception e1)
        {
            e1.printStackTrace();
        }
        catch (Error e2) {
            e2.printStackTrace();
        }
    } catch (ActivityNotFoundException e) {
        // No application to view, ask to download one
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("No Application Found");
        builder.setMessage("Download one 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://search?q=epub&c=apps"));
                        startActivity(marketIntent);
                    }
                });
        builder.setNegativeButton("No, Thanks", null);
        builder.create().show();
    }
    catch(Error e3) {
        e3.printStackTrace();
    }
}
试试这个

private void openReader(String data)
{
    Intent i;       
    PackageManager manager = getPackageManager();
    try {
        i = manager.getLaunchIntentForPackage("com.flyersoft.moonreader");
        if (i == null)
            throw new PackageManager.NameNotFoundException();

        i.setAction(Intent.ACTION_VIEW);
        i.setData(Uri.parse(data));
        startActivity(i);
    } catch (PackageManager.NameNotFoundException e) {
                   //Do something
    }
}

作为文件的参数发送路径

,相同的代码对我有效,没有任何更改。错误出现在代码的某些不同部分。

请注意,android Intent系统的使用方式并非如此。如果可以,考虑允许用其他应用程序打开它。同样的代码对我来说没有任何改变。错误出现在代码的某些不同部分。