我有一个需要显示一些 PDF 文件的应用程序。这些文件是设备的本地文件,并且设备用于无法访问 Web 的高安全性位置。
在 Android 获得一些本机功能或库来显示 PDF 文件之前,我依赖于 AdobeReader.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.
这很好地调用了 Adobe 阅读器,但是做...
((Activity)ctx).finishActivity(33);
...没有产生任何结果。我尝试将它包装在 try/catch 中,并且没有抛出异常。
我做错了什么,我该怎么做?提前致谢!