如何关闭或停止我在Android中启动的外部应用程序

时间:2012-07-11 19:17:37

标签: android

我有一个需要显示一些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中,并且没有抛出任何异常。

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

1 个答案:

答案 0 :(得分:1)

  

另一种思考方法是如何将我的应用程序带到显示屏顶部并将AdobeReader移至后台?

在您的某项活动上致电startActivity()。您应用中的某些内容正在确定“PC上的用户关闭文档”。有些东西可以调用startActivity()