我正在研究android 2.2,在android manifest的Application选项卡中提供了“Allow clear data”选项设置true或false。但在将其设置为False后,我的应用程序无法禁用“管理”应用程序的应用程序信息中的“清除数据”按钮。当应用程序在Data / Data / packge-name / databases /中包含数据库时,我遇到了这个问题。
我必须保护我的应用程序数据库免受用户的侵害。
答案 0 :(得分:119)
将android:manageSpaceActivity=".ActivityOfMyChoice"
添加到您的清单的application
标记中,如:
<application android:label="MyApp" android:icon="@drawable/icon"
android:manageSpaceActivity=".ActivityOfMyChoice">
然后"Clear Data"
启用了"Manage Space"
ActivityOfMyChoice
。
据我所知,这在100%的时间都有效。
答案 1 :(得分:42)
的AndroidManifest.xml
<application
android:manageSpaceActivity="[packageName].ManageSpaceActivity"
...
...
>
<activity
android:name="[packageName].ManageSpaceActivity"
android:screenOrientation="portrait" />
它会调用我的活动,但是:
public class ManageSpaceActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finish();
}// onCreate
}
并且活动在创作时已经死了,我喜欢技巧:)
现在您可以根据需要按“管理空间”! :))
- 如果您需要,可以在ManageSpaceActivity
进行自定义数据/缓存删除,但您可以保留您想要的数据。
对Jakar的投票回答太多了!
答案 2 :(得分:4)
无法阻止用户清除您的应用数据。您提到的清单选项仅适用于系统应用程序,作为开发人员,您无法安装系统应用程序。
请参阅this discussion了解详细信息 - 尤其是来自Diane Hackborn(Android框架工程师)的this回复
答案 3 :(得分:1)
只是个把戏。
<application
android:manageSpaceActivity="{packageName}.ManageSpaceActivity"
>
在这种情况下,Android OS将显示“管理空间”按钮来代替清除数据。
单击它会打开ManageSpaceActivity。
但是
<application
android:manageSpaceActivity=".AnyActivity"
>
如果您这样做。它将禁用清除数据按钮。
技巧是写没有完整包名称的活动名称。