finish 导致重新create 需要再次finish的bug

博客探讨了Android中隐式意图在特定设备上遇到的问题,指出必须设置`export=true`才能使用。作者通过设置意图的包名解决了无法启动活动的bug,并分享了在某个手机型号上返回箭头显示异常的状况,认为可能是手机系统的问题。解决方案包括覆盖`onOptionsItemSelected`以自定义返回行为。
摘要由CSDN通过智能技术生成

经过测试是隐式意图才会,https://developer.android.google.cn/guide/components/intents-filters#java

而且是特定的手机,另外隐式意图必须指定 export=true,隐式意图本来用来做多渠道,看来这个东西不好使。。
可以通过读取class反射或者设置包名解决这个bug

Intent intent = new Intent("xx.print.template.setting");
        intent.setPackage(activity.getPackageName());
        ResolveInfo resolveInfo = activity.getPackageManager().resolveActivity(intent, PackageManager.MATCH_ALL);
        Log.w("resolveInfo",resolveInfo.activityInfo.name+"");
        activity.startActivity(intent);

其中

intent.setPackage(activity.getPackageName());
        ResolveInfo resolveInfo = activity.getPackageManager().resolveActivity(intent, PackageManager.MATCH_ALL);
        Log.w("resolveInfo",resolveInfo.activityInfo.name+"");

是我加上去解决的。

设置包名就能解决,但是我之前写的一篇文章中,返回箭头的默认实现也会在某手机出现两次才能关闭。
而我当时的做法是:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:// 点击返回图标事件
                clickHome();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

我认为appcompat类不会又错的,有错的是这个手机系统,idata pda。。。 这个问题依旧重复出现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值