我想以编程方式清除应用程序的数据。
应用程序的数据可能包含数据库、共享首选项、内部-外部文件或应用程序内创建的任何其他文件等任何内容。
我知道我们可以通过以下方式清除移动设备中的数据:
设置->应用程序->管理应用程序->我的应用程序->清除
数据
但是我需要通过Android程序来完成上述事情吗?
API 19 (KitKat) 中引入了一个新 API:ActivityManager.clearApplicationUserData() http://developer.android.com/reference/android/app/ActivityManager.html#clearApplicationUserData().
我强烈建议在新应用程序中使用它:
import android.os.Build.*;
if (VERSION_CODES.KITKAT <= VERSION.SDK_INT) {
((ActivityManager)context.getSystemService(ACTIVITY_SERVICE))
.clearApplicationUserData(); // note: it has a return value!
} else {
// use old hacky way, which can be removed
// once minSdkVersion goes above 19 in a few years.
}
如果您不想要这种老套的方式,您也可以隐藏用户界面上的按钮,这样该功能在旧手机上就无法使用。
任何使用此方法的人都必须了解此方法android:manageSpaceActivity http://developer.android.com/reference/android/content/pm/ApplicationInfo.html#manageSpaceActivityName.
每当我使用它时,我都是从manageSpaceActivity
其中有android:process=":manager"
。在那里,我手动杀死任何other我的应用程序的流程。这允许我让 UI 保持运行并让用户决定下一步去哪里。
private static void killProcessesAround(Activity activity) throws NameNotFoundException {
ActivityManager am = (ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE);
String myProcessPrefix = activity.getApplicationInfo().processName;
String myProcessName = activity.getPackageManager().getActivityInfo(activity.getComponentName(), 0).processName;
for (ActivityManager.RunningAppProcessInfo proc : am.getRunningAppProcesses()) {
if (proc.processName.startsWith(myProcessPrefix) && !proc.processName.equals(myProcessName)) {
android.os.Process.killProcess(proc.pid);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)