如何禁用管理应用程序的应用程序信息中的清除数据按钮

时间:2011-06-30 07:10:58

标签: android sqlite

我正在研究android 2.2,在android manifest的Application选项卡中提供了“Allow clear data”选项设置true或false。但在将其设置为False后,我的应用程序无法禁用“管理”应用程序的应用程序信息中的“清除数据”按钮。当应用程序在Data / Data / packge-name / databases /中包含数据库时,我遇到了这个问题。

我必须保护我的应用程序数据库免受用户的侵害。

4 个答案:

答案 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"
    >

如果您这样做。它将禁用清除数据按钮

技巧是写没有完整包名称的活动名称