有没有办法在应用程序中以编程方式捕获Clear Data操作?

pik*_*iks 4 android

我开发了一个Android应用程序,它有一组活动和一个后台服务运行.我将一些应用程序数据保存到设备的内部存储器中,因此当用户从"设置" - >"应用程序" - >"清除数据"按钮单击"清除数据"选项时,内部存储器中保存的所有数据都将被清除.当用户点击我的应用程序服务中的"清除数据"按钮或广播接收器类时,我必须捕获Clear Data点击事件或操作(如果有的话),任何人都可以建议设备在点击清除数据时发出任何操作所以我可以在我的app广播接收器类中捕获该动作并执行所需的任务???

请以一些例子向我提供决议.

问候,皮克斯

Sat*_*ran 6

最好的方法是在首次运行应用程序时保存SharedPreferences中的值,例如"IS_DATA_CLEARED",或者保存所有必需的详细信息,并始终确保在应用程序生命周期的任何时间都不会出现此值.

SharedPreferences appSharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = appSharedPrefs.edit();
editor.putBoolean("IS_DATA_CLEARED",false);
editor.apply();
Run Code Online (Sandbox Code Playgroud)

然后每次都做以下检查.

SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
boolean IS_DATA_CLEARED =  appSharedPrefs.getBoolean("IS_DATA_CLEARED",true);

if(IS_DATA_CLEARED){
  //DATA IS CLEARED
}
else{
  //DATA IS NOT CLEARED
}
Run Code Online (Sandbox Code Playgroud)


Raj*_*kar 6

您可以做的是在清单文件的应用程序标记中使用以下属性。

android:manageSpaceActivity=".path.to.MyActivity"
Run Code Online (Sandbox Code Playgroud)

这会将设置中的“清除数据”按钮替换为“管理空间”。现在,您可以将用户重定向到由您控制的自定义活动。

活动的启动将作为您的回调。操作您的活动中的数据并使用以下代码

private void clearPreferences() {
    try {
        // clearing app data
        Runtime runtime = Runtime.getRuntime();
        runtime.exec("pm clear YOUR_APP_PACKAGE_GOES HERE");

    } catch (Exception e) {
        e.printStackTrace();
    }
   }
Run Code Online (Sandbox Code Playgroud)

清除应用程序数据。


Com*_*are 3

当用户单击我的应用程序服务或广播接收器类中的“清除数据”按钮时,我必须捕获“清除数据”单击事件或操作(如果有),任何人都可以建议在单击应用程序的“清除数据”时设备是否会抛出任何操作这样我就可以在我的应用程序广播接收器类中捕获该操作并执行所需的任务???

空无一人。AFAIK,按“清除数据”也会停止您的进程,因此您的代码将不会运行。您会将用户按下“清除数据”视为与用户首次安装您的应用程序的情况相同。