我有一个使用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吗?
这种设置是否足以提供合理的保护?
发布于 2011-02-15 11:54:04
我相信MainActivity可以通过以下方式从另一个应用程序启动:
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.package", "com.package.MainActivity"));
startActivity(intent);
所以,不,这不会保护你的MainActivity本身,但是你可以在LVLActivity和MainActivity之间拥有某种必需的共享数据,这样如果这些数据不存在,MainActivity就会停止。
但是,请注意,即使这样也不会阻止可以对代码进行反向工程的用户。为了防止这种情况,您不应该在设备上的应用程序中包含任何敏感数据-这基本上意味着您应该在服务器上执行所有业务逻辑,并且只将对给定用户安全的数据发送回设备。当然,您需要在服务器上拥有某种类型的用户authentication+authorization。
发布于 2011-02-15 13:09:20
为什么你不在你的主要活动中做许可证检查呢?这就是谷歌recommend的方式。
除此之外,你可以随时执行许可证检查,但@Peter Knego说得对,如果有人真的想绕过许可证检查,那么他们就会这么做。
https://stackoverflow.com/questions/5003124
复制