Android 解决qq分享后返回程序出现的Bug

问题:当我们使用qq分享时,分享成功后选择留在qq,这个时候按home键,回到手机主界面,在点击回到我的app,这个时候会出现界面显示出来了,但是任何事件都不响应,即按钮没反应。

分析:这个时候回到我们的app时,会发现activity的生命周期只走了 onRestart()---onStart(),走到这里就结束了,onResume()并没有执行,所以界面不响应

这个时候我们又会发现qq分享用到的的一个AssistActivity 它的生命周期:.: --onActivityResult()---onStart()---onResume()

结论:至此,我们发现了原因,是这个AssistActivity的问题。

解决:我们可以在我们程序的onStart()方法判断一下,如果这个AssistActivity处在栈顶就把它清除掉。

@Override
protected void onStart() {
    super.onStart();
    Log.i("---share----", "-----start");
    if(isNeedRestart()){
        Intent intent = new Intent(context, this.getClass());
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //清除栈顶的activity
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);//不显示多余的动画,假装没有重新启动 //记得带需要的参数
        startActivity(intent);
    }

}
private boolean isNeedRestart(){

    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        ActivityManager.RunningTaskInfo taskInfo = tasks.get(0);
        if (topActivity.getPackageName().equals(context.getPackageName())) {
        // 若当前栈顶界面是AssistActivity,则需要手动关闭
            if (topActivity.getClassName().equals("com.tencent.connect.common.AssistActivity"))
            return true;
        }
    }
    return false;
}

原文地址:https://www.cnblogs.com/fuyaozhishang/p/8438295.html

时间: 2024-10-18 13:12:14

Android 解决qq分享后返回程序出现的Bug的相关文章

解决Android后台清理APP后,程序自动重启的问题

最近解决了一个Android APP的bug,发现APP在被后台清理后,会自动重启.现象很奇怪,有的手机(HTC)后台清理后,程序必crash,而有的手机(小米)程序不会crash.查找问题时,发现HTC手机执行后台清理后,程序会自动重启,而小米手机则没有.猜想可能是小米手机内部做了处理,当执行后台清理后,对应的APP不会再重启了.不过问题在于,HTC手机后台清理,为什么会导致程序crash. Debug后发现,APP内部有一个Service,在Service的onStartCommand函数中

Android实现QQ分享及注意事项

一.获取APPID和帮助文档 在前面我介绍了关于Android中微信分享的文章< Android实现微信分享及注意事项>这一篇文章来看看关于QQ分享. 可以参看新手引导和接入说明:http://wiki.open.qq.com/wiki/移动应用接入wiki索引 分享相关文档说明:http://wiki.open.qq.com/index.php?title=Android_API调用说明&=45038#1.13_.E5.88.86.E4.BA.AB.E6.B6.88.E6.81.AF

android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序 在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, 结果总是存在好几个同样的activity,就算要返回的activity正在前台,点击消息后也会重新打开一个一样的activity,返回好几次才能退出, 而不能像qq之类的点击通知栏消息回到之前存在的activity,如果存在就不再新建一个activity 说的有点绕,如果是遇到此类问题的肯定能懂,没遇到

史上最详细Android集成QQ,微信,微博分享(不用第三方)持续更新中

QQ 1 下载sdk并运行demo 2 各种配置 IUiListener 4 分享图片 41 分享到QQ 41 分享到QZONE Sina微博 配置 选择集成sdk方式 分享图片 现在项目中用个第三方登录,或分享已经不是什么稀奇事了,但是要想把这个功能做好,那可就不容易了.估计到这里就有人会说了,扯犊子,这玩意,我用第三方sdk,什么umeng,sharesdk分分钟给你做出来,可是这些第三方sdk只有对项目的分享要求不高的时候才适合,如果要定制分享,那我就只能呵呵.虽然第三方登录或分享没什么技

php 表单提交错误后返回数据消失问题的解决方法

本文章向码农们介绍php 表单提交错误后返回数据消失问题的解决方法,感兴趣的码农可以参考一下. 表单提交错误后返回数据消失怎么办呐,今天就来分析解决一下这个问题. 状况概述: 做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填写的表单信息会被清空了的情况.如果填写的信息量少还无所谓,如果填写的信息量比较多,这会直接打击到填写信息的人的良好心情.因此解决表单提交错误返回后填写的内容消失的问题是一个提高用户体验度的迫在眉睫的问题. 对于这种问题

Android 第三方QQ、微信、微博登录分享

最近弄了下QQ微信微博的登录分享,在这里做一下总结,以下登录分享使用的都是官方的最新SDk. 首先是QQ的登录: 1.第一步肯定是先去开放平台注册应用,这里步骤就不详细说了 http://open.qq.com/ 2.将下载好的jar包导入工程,在AndroidManifest文件里面注册SDK里面提供的Activity <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="

503是一种HTTP状态码。英文名503 Service Unavailable与404(404 Not Found)是同属一种网页状态出错码。前者是服务器出错的一种返回状态,后者是网页程序没有相关的结果后返回的一种状态,需要优化网站的时候通常需要制作404出错页以便网站整体优化。

goldCat1 商城 消息 | 百度首页 新闻网页贴吧知道音乐图片视频地图百科文库 进入词条搜索词条帮助 近期有不法分子冒充官方收费编辑词条,百度百科严正声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗!查看详情 X 首页 分类 艺术 科学 自然 文化 地理 生活 社会 人物 经济 体育 历史 特色百科 历史上的今天 数字博物馆 史记·2015 城市百科 二战百科 非遗百科 用户 蝌蚪团 燃梦计划 百科任务 百科商城 权威合作 合作模式 常见问题 联系

Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博

原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博等 因为偷懒,可直达微信.朋友圈.QQ.QQ空间.微博的分享仅写了图片分享的,其他的文本.文件分享不常用到,就不写了. 具体图片分享区分单张图片分享和多张图片分享,详情请看代码: import android.content.ComponentName; import android.content

android在view.requestFocus(0)返回false的解决办法

我们有时候想让listview的第一行自动获取到焦点,我们就会使用view.requestFocus(0)来操作,而有时候并不生效,debug后显示rerurn为false. 这是因为我们获取焦点太早,listview控件还为加载完毕.可以尝试一下方法解决: listview.post(new Runnable(){ @Override public void run(){ view.requestFocus(0); } }); ok,问题解决! android在view.requestFocu