|
16 | 16 |
|
17 | 17 | package android.os; |
18 | 18 |
|
| 19 | +import android.content.BroadcastReceiver; |
| 20 | +import android.content.Context; |
| 21 | +import android.content.Intent; |
| 22 | +import android.util.Log; |
| 23 | + |
19 | 24 | import java.io.ByteArrayInputStream; |
20 | 25 | import java.io.File; |
21 | 26 | import java.io.FileNotFoundException; |
|
37 | 42 | import java.util.zip.ZipEntry; |
38 | 43 | import java.util.zip.ZipFile; |
39 | 44 |
|
40 | | -import android.content.Context; |
41 | | -import android.util.Log; |
42 | | - |
43 | 45 | import org.apache.harmony.security.asn1.BerInputStream; |
44 | 46 | import org.apache.harmony.security.pkcs7.ContentInfo; |
45 | 47 | import org.apache.harmony.security.pkcs7.SignedData; |
@@ -336,8 +338,21 @@ public static void installPackage(Context context, File packageFile) |
336 | 338 | * @throws IOException if writing the recovery command file |
337 | 339 | * fails, or if the reboot itself fails. |
338 | 340 | */ |
339 | | - public static void rebootWipeUserData(Context context) |
340 | | - throws IOException { |
| 341 | + public static void rebootWipeUserData(Context context) throws IOException { |
| 342 | + final ConditionVariable condition = new ConditionVariable(); |
| 343 | + |
| 344 | + Intent intent = new Intent("android.intent.action.MASTER_CLEAR_NOTIFICATION"); |
| 345 | + context.sendOrderedBroadcast(intent, android.Manifest.permission.MASTER_CLEAR, |
| 346 | + new BroadcastReceiver() { |
| 347 | + @Override |
| 348 | + public void onReceive(Context context, Intent intent) { |
| 349 | + condition.open(); |
| 350 | + } |
| 351 | + }, null, 0, null, null); |
| 352 | + |
| 353 | + // Block until the ordered broadcast has completed. |
| 354 | + condition.block(); |
| 355 | + |
341 | 356 | bootCommand(context, "--wipe_data"); |
342 | 357 | } |
343 | 358 |
|
|
0 commit comments