Android - 清除应用程序数据并重启设备
Android - clear application data and reboot device
我正在使用 cordova 编写 Android 应用程序。此应用仅安装在专用的 Android 5.1.1 设备上。除其他外,我具有清除所有应用程序数据的功能。我已经在 cordova-plugin 中实现了这个功能:
// My Cordova Plugin java
if (action.equals("factory_reset")) {
try {
Log.i(TAG, "Factory Reset");
((ActivityManager)cordova.getActivity().getApplicationContext().getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData();
rebootDevice();
} catch (Exception ex) {
Log.w(TAG, "Error while doing a Factory Reset", ex);
}
}
我想在删除所有应用程序数据后重新启动设备。这是我的重启功能:
private void rebootDevice(){
Context mContext = cordova.getActivity().getApplicationContext();
PowerManager pManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
pManager.reboot(null);
}
重启功能本身正在运行。但是我遇到了问题,当我调用 ((ActivityManager)cordova.getActivity().getApplicationContext().getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData();
时它没有达到这个功能,因为应用程序立即被强制关闭。
我该如何解决这个问题?如何清除应用程序数据并重启设备?
我选择了 this solution:
我的插件代码:
public boolean execute(final String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("factory_reset")) {
clearApplicationData();
rebootDevice();
}
}
private-functions,即所谓的:
private void clearApplicationData() {
File cache = cordova.getActivity().getApplicationContext().getCacheDir();
File appDir = new File(cache.getParent());
Log.d(TAG, "AppDir = " + appDir);
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
Log.d(TAG, "Delete " + s);
deleteDir(new File(appDir, s));
}
}
}
}
private void rebootDevice(){
Context mContext = cordova.getActivity().getApplicationContext();
PowerManager pManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
pManager.reboot(null);
}
我正在使用 cordova 编写 Android 应用程序。此应用仅安装在专用的 Android 5.1.1 设备上。除其他外,我具有清除所有应用程序数据的功能。我已经在 cordova-plugin 中实现了这个功能:
// My Cordova Plugin java
if (action.equals("factory_reset")) {
try {
Log.i(TAG, "Factory Reset");
((ActivityManager)cordova.getActivity().getApplicationContext().getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData();
rebootDevice();
} catch (Exception ex) {
Log.w(TAG, "Error while doing a Factory Reset", ex);
}
}
我想在删除所有应用程序数据后重新启动设备。这是我的重启功能:
private void rebootDevice(){
Context mContext = cordova.getActivity().getApplicationContext();
PowerManager pManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
pManager.reboot(null);
}
重启功能本身正在运行。但是我遇到了问题,当我调用 ((ActivityManager)cordova.getActivity().getApplicationContext().getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData();
时它没有达到这个功能,因为应用程序立即被强制关闭。
我该如何解决这个问题?如何清除应用程序数据并重启设备?
我选择了 this solution:
我的插件代码:
public boolean execute(final String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("factory_reset")) {
clearApplicationData();
rebootDevice();
}
}
private-functions,即所谓的:
private void clearApplicationData() {
File cache = cordova.getActivity().getApplicationContext().getCacheDir();
File appDir = new File(cache.getParent());
Log.d(TAG, "AppDir = " + appDir);
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
Log.d(TAG, "Delete " + s);
deleteDir(new File(appDir, s));
}
}
}
}
private void rebootDevice(){
Context mContext = cordova.getActivity().getApplicationContext();
PowerManager pManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
pManager.reboot(null);
}