我有一个需要显示一些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!");
}
这很有效,但在我完成显示后我想停止它并返回我的主应用程序。 this S.O question上的“获胜”答案说,如果我使用 StartActivityForresult(),我可以使用 finishActivity()来完成它但是我无法得到它工作(我不知道它是如何工作的,因为没有我们想要停止的活动的实例)
仍然,我将StartActivity更改为:
((Activity)ctx).startActivityForResult(i, 33); //!! // 33 = arbitrary r.c.
这很好地调用了Adobe读者,但做了......
((Activity)ctx).finishActivity(33);
......没有结果。我尝试将它包装在try / catch中,并且没有抛出任何异常。
我做错了什么,我该怎么做?提前谢谢!
答案 0 :(得分:1)
另一种思考方法是如何将我的应用程序带到显示屏顶部并将AdobeReader移至后台?
在您的某项活动上致电startActivity()
。您应用中的某些内容正在确定“PC上的用户关闭文档”。有些东西可以调用startActivity()
。