Bootstrap

Android 10 恢复出厂设置和清除应用数据接口

1 .恢复出厂方式的接口

a.通过广播方式调用:

       Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);
        intent.setPackage("android");
        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
        intent.putExtra(Intent.EXTRA_REASON, "MasterClearConfirm");
        intent.putExtra(Intent.EXTRA_WIPE_EXTERNAL_STORAGE, true);
        intent.putExtra(Intent.EXTRA_WIPE_ESIMS, true);
       mContext.sendBroadcast(intent);
———————————————————————————————————————————

b.直接调用:

boolean shutdown; //操作完成后是否重启

String reason;//字符串 可以自定义 

boolean force;//是否应忽略用户限制

boolean wipeEuicc;//是否擦除euicc数据

RecoverySystem .rebootWipeUserData(mCOntext, shutdown, reason, force, wipeEuicc);

———————————————————————————————————————————

2.清除用户数据接口

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.clearApplicationUserData("应用包名", new IPackageDataObserver() {
    @Override
    public IBinder asBinder() {
        return null;
    }

    @Override
    public void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteException {
         Log.d("lmj",packageName+"=清除="+succeeded);
    }
});

———————————————————————————————————————————

说明:当然这两种调用方式:都是直接调用隐藏方法?正常app直接调用是无法正常调用的,还需要有以下几步操作:

1. 清除权限:

<uses-permission   android:name="android.permission.CLEAR_APP_USER_DATA"/>
2. 系统应用:在清单文件下设置应用为系统应用
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        android:sharedUserId="android.uid.system">

3.这一步最为重要,必须要引入framework.jar ,并且设置jar包优先于系统api编译,并配置jar包只参与编译,不参与打包。这样操作后 就避免需要利用反射去调用!!!
 

;