使用LVL和显式意图进行应用程序保护?

时间:2011-02-15 11:36:29

标签: android android-intent android-lvl

我有一个使用LVL的应用程序。它包含(为简单起见)两个活动:第一个名为LVLActivity的检查许可证。如果它失败了,它只是简单地完成,否则它会以明确的意图启动名为MainActivity的第二个活动。

在清单中,有

<application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".LVLActivity">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
  </activity>
  <activity android:name=".MainActivity">
  </activity>
</application>

是否有其他人可以编写一个小型应用程序,以明确的意图启动MainActivity? 这种设置是否足以获得合理的保护?

2 个答案:

答案 0 :(得分:1)

我相信MainActivity可以通过以下方式从另一个应用程序启动:

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.package", "com.package.MainActivity"));
startActivity(intent);

所以,不,这不会保护您的MainActivity本身,但您可以在LVLActivity和MainActivity之间拥有某种必需的共享数据,这样如果此数据不存在,MainActivity将会停止。

但是,请注意,即使这样也不会阻止可以对代码进行逆向工程的用户。为了防范这种情况,您不应该在设备上的应用程序中包含任何敏感数据 - 这基本上意味着您应该在服务器上执行所有业务逻辑,并且只将给定用户安全的数据发送回设备。当然,您需要在服务器上进行某种用户身份验证+授权。

答案 1 :(得分:0)

为什么不在主要活动中执行许可检查?这就是Google recommend

的方式

除此之外,您可以随时执行许可证检查,但@Peter Knego说如果有人真的想要绕过许可证检查,那么他们就会这样做。