Android 从外部pdf读取器返回时未调用onActivityResult()

Android 从外部pdf读取器返回时未调用onActivityResult(),android,pdf,Android,Pdf,我正在从以下代码启动pdf阅读器: public static final int MY_INTENT_FLAG = 1; String documentName = "filename.pdf"; File file = new File(getFilesDir(), documentName); if (file != null && file.exists()) { Uri filePathUri = Uri.fromFile(file); Intent int

我正在从以下代码启动pdf阅读器:

public static final int MY_INTENT_FLAG = 1;
String documentName = "filename.pdf";
File file = new File(getFilesDir(), documentName);
if (file != null && file.exists()) {
   Uri filePathUri = Uri.fromFile(file);
   Intent intent = new Intent(Intent.ACTION_VIEW);
   intent.setDataAndType(filePathUri, "application/pdf");

   try {
      startActivityForResult(intent,MY_INTENT_FLAG);
   } catch (ActivityNotFoundException e) {...}
}
打开文档并阅读它可以正常工作。但是,当我在pdf阅读器中按back按钮时,不会调用onActivityResult()。为什么会这样?这可能仅仅是因为特定的pdf阅读器在完成时没有设置结果代码吗?我的设备上有Acrobat Reader

我想知道我什么时候从外部活动返回,这样在这种情况下用户就不需要再次登录

谢谢你的意见

为什么会这样?这是否仅仅是因为特定的pdf阅读器确实如此 完成时未设置结果代码?我的电脑上有Acrobat Reader 装置

是的,通常情况就是这样


对于要传回的结果,子活动需要先调用,然后再调用。如果没有,则“结果”不会传播回父活动。

您可以获得一个
onActivityResult()
方法,但您无法从子活动获取结果,因为它不是通过
setResult()返回结果。

你告诉你检查登录,所以你有其他方法来检查登录

例如

您可以将用户名和密码保存到
首选项
,并从中读取登录详细信息
如果其中有详细信息,则用户为登录用户,如果没有,则您可以向用户弹出登录屏幕。

您可能希望查看此问题中的公认答案:是否无法监控此问题?如果您以某种方式获得通过startActivityForResult()启动的活动的句柄,您可能可以使用isFinishing()在后台线程中监视它的状态。这对我很有用。然而,当它不工作时,我发现了一种情况:当打开pdf阅读器时,手机上会出现一个复选框“用作此操作的标准”。如果选中此项,则在第二次打开pdf阅读器时(以及之后的所有时间)它都不起作用。