Android startActivityForResult onActivityResult 立即执行 和不执行的问题

一切都准备好了,测试过了。正准备高兴一下。用小手机一试,我去,出bug了,excel关闭后,不能正常触发onActivityResult。

之前用开发专用平板,都一切正常啊。

于是折腾几小时。

今天解决了,如下:

void openExcel() {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setPackage(“com.microsoft.office.excel”);

i.setDataAndType(printFileUri, “application/vnd.ms-excel”);

startActivityForResult(i, 1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1) {
Toast.makeText(MainActivity.this, “已关闭excel”, Toast.LENGTH_LONG)
.show();

}
}

以上代码在Android Lollipop 即:android 5.0及以上系统正常执行。

而在Android 5.0以下,Android 4.4之类的,我试过,就是不能正常执行,总是在startActivityForResult时,立即执行 onActivityResult。

我也在网上搜索了,很多国内国外的资料,没有找到这个问题的描述。全是谈到

android:launchMode=”singleInstance” 之类的。

可是我遇到的明显不是这个问题。

昨晚折腾几个小时,都没有解决。今早,用另一个android 5.1的手机来测试,一切正常。和昨天用android 5系统版本的平板测试的一样。

说明,的确在android 5以上系统Android Lollipop 正常,Android Lollipop版本以下的,不能正常执行。

在此记录一下,避免其他人再走弯路。