位置:首页 > 健康育儿 >

测试activity跳转第三方app时遇到的坑~

作者: | 发布时间:2019-08-29 01

一、背景

小编所在的团队前段时间出现一个比较特殊的bug。

输入法做了一个功能按钮,点击可以跳转手机已安装的第三方apk;测试功能全部通过,但在机白金会型适配时发现在OPPO手机上跳转失败了,点击按钮就没有然后了(╯‵□′)╯︵┻━┻。

二、调查过程

发现问题后,立刻与OPPO的同学进行联系,抛出了问题后,对方给出的答案是:输入法属于后台应用,通过后台应用直接调起其他前台应用是对用户很不友好的行为,因此禁止掉了这一能力;
为了验证OPPO确实屏蔽了后台调起前台的能力,小编编写了一个简单的demo,详细内容如下:
1、在mainactivity中添加点击事件:调起一个后台service模拟输入法环境(输入法作为一个后台应用存在,这里利用service模拟后台环境)。

2、在创建的Myservice中配置调起事件:通过后台servi白金会c白金会e直接去调起第三方apk。

3、执行:

将该demo放在Android8.1的小米6上运行,log及现象为:

九乐棋牌 开元棋牌

调起后台service→启用第三方apk→(现象:第三方apk被调起);

将该demo放在相同Android版本的OPPO手机上运行,log及现象为:

调起后台service→启用第三方apk→(现象:手机没有任何反应)。

三、解决方案:

开发同学给出一九乐棋牌个折中的方法,既然后台无法跨进程调起前台应用,那么我们就创建一个自己的前台的隐藏的activity,然后通过前台activity来调起第三方应用,这样就可以规避掉OPPO的屏蔽策略。

为了证明该方案有效,小编重新改写了下之前的demo:

1、调起service方法不变;

2、改写startOtherApp()方法,直接调起一个新建的activity。

3、在新创建的OneActivity中配置调起第三方apk操作。

4、给OneActivity添加隐藏属性:在Androidmanifest中添加。

5、验证:

将该demo放在android8.1的小米6和OPPO设备上运行,log及现象为:

调起后台service→调起空的前台activity→前台activity跳转第三方apk→(第三方apk被调起)。

四、总结:

遇到典型bug,中华娱乐一定要想办法弄明白bug产生的详细原因、解决方案。这样有助于提高个人的测试发散度,遇到类似需求能够立刻指出隐患,规避问题。