2

我有一个需要显示一些 PDF 文件的应用程序。这些文件是设备的本地文件,并且设备用于无法访问 Web 的高安全性位置。

在 Android 获得一些本机功能或库来显示 PDF 文件之前,我依赖于 Adob​​eReader.apk,我因此启动了它:

Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(dgfile), "application/pdf");
i.setClassName("com.adobe.reader", "com.adobe.reader.AdobeReader");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
// ctx is a passed-in Context of my main Activity
try   { 
    ctx.startActivity(i);
}
 catch (ActivityNotFoundException e)    {   // incase no viewer installed
    Log.e("DG_External", "No viewer found!");
}

这完美地工作,但在我完成显示后,我想停止它并返回我的主应用程序。这个 SO 问题的“获胜”答案说,如果我使用StartActivityForresult(),我可以使用finishActivity() 但我无法让它工作(我不知道它是如何工作的,因为没有实例我们要停止的活动)

不过,我将 StartActivity 更改为:

((Activity)ctx).startActivityForResult(i, 33);  //!!  // 33 = arbitrary r.c.

这很好地调用了 Adob​​e 阅读器,但是做...

((Activity)ctx).finishActivity(33);

...没有产生任何结果。我尝试将它包装在 try/catch 中,并且没有抛出异常。

我做错了什么,我该怎么做?提前致谢!

4

1 回答 1

1

另一种思考方式是如何将我的应用程序带到显示屏顶部并将 Adob​​eReader 移动到后台?

召集startActivity()您的一项活动。您的应用程序中的某些内容正在确定“PC 上的用户关闭文档”。那东西可以叫startActivity()

于 2012-07-11T22:28:39.917 回答