流氓意图是可能的还是其他事情发生了?

时间:2015-02-12 10:03:59

标签: android android-intent

背景

我们有一个传统的Android应用程序,它最近开发了一个疯狂的bug。它不会影响许多用户,但会破坏所有需要管理和支持的功能。它已经很糟糕了,必须修复它。我们无法重现该错误,也没有记录。

目前的团队没有太多或任何Android经验,也不熟悉代码库。

错误说明

该应用有三种状态:

  1. 已激活,令牌
  2. 已激活,无代币
  3. 未激活,没有令牌
  4. 某些东西导致应用程序从状态(1)转到状态(2),即令牌丢失或被删除。在此之后,应用程序保持在状态(2)。

    • API 7
    • 在Android 4.1 +
    • 上发生
    • 对某些用户重新发生
    • 从服务器&存储在设备上。

    理论

    该应用程序可以通过可浏览的意图启动,该意图将删除所有令牌并“重新激活”它。这将从状态(1)发送到状态(2)。

    代码说明

    意图过滤器:

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
    
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
      <data android:scheme="myscheme" />
    
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
    
      <action android:name="android.intent.action.VIEW" />
    </intent-filter>
    

    开始代码:

    public void onStart() {
        super.onStart();
    
        Uri activationUrl = getIntent().getData();
        boolean busyActivating = (activationUrl != null);
    
        if (busyActivating) {
            // delete tokens
            // save activation url
            // state - activated no tokens
        } else if (isActivated()) {
            startNormally();
        } else {
            askToActivate();
        }
    }
    

    结论

    对我而言看起来就像有某种类型的流氓意图导致并激活app进入 busyActivating 流程。

    我能够通过强制意图两次来复制它,但已经确认用户没有这样做。

    这一切都可能吗?还有其他事情发生在这里吗?


    编辑:我们无法弄清楚为什么会发生这种情况,最后我只是将代码更改为更强大并希望获得最佳效果。 即使这个问题会变老而死,如果你将来遇到这个问题,请回答你是否遇到过类似的问题!

0 个答案:

没有答案