2011-07-22 35 views
0

回到我开始一个PDF阅读器从这样的代码时不叫:onActivityResult()从外部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阅读器按下后退按钮onActivityResult()不被调用。为什么是这样?这可能是因为特定的pdf阅读器在完成时没有设置结果代码吗?我的设备上有Acrobat Reader。

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

谢谢你的任何输入

+0

你可能想看看这个问题中接受的答案:http://stackoverflow.com/questions/3542107/how-do-i-handle-the-back-button-when-startactivityforresult-is-active –

回答

0

这是为什么?难道这只是因为该特定的PDF阅读器 完成后没有设置结果代码吗?我在我的 设备上安装了Acrobat Reader。

是的,通常情况是这样。

对于要传回的结果,子女活动将需要先致电setResult(),然后致电finish()。如果没有,“结果”不会传播回父活动。

+0

那么没有办法监控这个? – Vanja

+0

如果您以某种方式获取通过startActivityForResult()启动的活动的句柄,则可以使用isFinishing()在后台线程中监视其状态。 – ptashek

0

你可以得到一个onActivityResult()方法,但因为它不是由setResult()

返回结果,你不能从子活动的结果,你告诉你检查登录,这样你有替代方法来检查登录

例如

可以保存用户名和密码preference,你可以从中读取 的登录信息如果出现在它的细节,然后用户登录的d如果不是那么你可以弹出登录屏幕给用户。

+0

这对我有用。不过,当我发现一个不工作的情况时:打开PDF阅读器时,手机上出现一个复选框“用作此操作的标准”。在检查它时,第二次打开PDF阅读器(以及所有后续时间)不起作用。 – Vanja