调用startActivityForResult后直接产生onActivityResult回调问题

之前遇到调用startActivityForResult后,即时我跳转界面还没有返回,还是几乎调用startActivityForResult后马上就调用onActivityResult的情况,在网上找了很长时间的解决方法,都没有什么效果,自己思考后想了两个方案,一个是重写onResume方法,一个是判断当前应用是不是出于foreground(因为我是跳转其他应用的),今天突然又写了一次调用其他app的代码,突然想到是不是flags的问题,于是把intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)去掉,问题就修复了,在这里就跟大家分享一下,完整的跳转代码如下
 

String packageName = "xxxxx";//需要跳转的应用的applicationId
String clazzName = "xxxx";//需要跳转打开的界面的类名
int REQUEST_CODE = 10086;//自定义的请求码
PackageInfo packageInfo = null;
try{
    packageInfo = getPackageManager().getPackageInfo(packageName, 0);
}catch (PackageManager.NameNotFoundException e){
    Toast.makeText(this, "手机上没有安装xxxx", Toast.LENGTH_SHORT).show();
    return;
}
Intent intent = new Intent(Intent.ACTION_MAIN);
ComponentName componentName = new ComponentName(packageInfo.packageName, clazzName);
intent.setComponent(componentName);
startActivityForResult(intent, REQUEST_CODE);

就是这样,只是把intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)去掉,问题就解决了,在这里记录一下,有时间的时候再去看看这个flag源码的操作,看看是为什么这样处理。

发布了24 篇原创文章 · 获赞 2 · 访问量 3662

猜你喜欢

转载自blog.csdn.net/ALee_130158/article/details/103971765