AndroidでRecoverySystemクラスを使用して工場出荷時のリセットを実行しようとしましたが、システム権限であるため上書きできないパーミッションエラーが発生します。工場のリセットを行う別の方法があるかどうかを知りたいですか?Android Factory Reset Programm
答えて
ユーザーを適切な設定アクティビティに送信して、自分で行うことをお勧めします。
あなたはDeviceAdministration(上記API 2.2または)
DevicePolicyManager mDPMを使用する必要がandroid.provider.Settings.ACTION_PRIVACY_SETTINGS
this tutorial及び利用設定アクティビティを参照してください。 mDPM.wipeData(0);
は参照してください:これは私が試してみました、多くの異なるデバイス上で動作します http://developer.android.com/guide/topics/admin/device-admin.html
。 (20以上)
Context foreignContext = createPackageContext("com.android.settings", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
Class<?> yourClass = foreignContext.getClassLoader().loadClass("com.android.settings.MasterClear");
Intent intent = new Intent(foreignContext, yourClass);
startActivity(intent);
これはAndroid 3.0を中心に動作しなくなります。デバイスのワイプを要求するには、デバイスの管理APIを使用します。 – CommonsWare
第三者のアプリケーションで最も可能なのはこれです。
2.2以上のデバイス(最新の4.xを含む)では、DevicePolicyManagerを使用し、AndroidManifest.xmlにアクセス許可を含める必要があります。古いデバイスの場合は、他の答えに記載されているように、外部コンテキストローダーを使用することができます。
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
DevicePolicyManager mDPM;
ComponentName mDeviceAdmin;
であっAndroidのバージョンを確認する作成したオブジェクト
currentAPIVersion = Build.VERSION.SDK_INT;
if (currentAPIVersion >= android.os.Build.VERSION_CODES.FROYO) {
//2.2+
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdmin = new ComponentName(this, WipeDataReceiver.class);
}
にハンドルを取得WipeDataReceiverクラスはDeviceAdminReceiverを実装するクラスだったが、任意の上書きやコードの更新を持っていませんでした。
public static class WipeDataReceiver extends DeviceAdminReceiver {
}
再開時には、最初に工場出荷時リセットを確認する必要があります。アクティビティが結果を返すと、wipeDataが実行されます。 Froyo以下であれば、在庫工場のリセット活動を飛び越すことができます。
if (currentAPIVersion >= android.os.Build.VERSION_CODES.FROYO) {
// 2.2+
if (!mDPM.isAdminActive(mDeviceAdmin)) {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdmin);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Process will remove user installed applications, settings, wallpaper and sound settings. Are you sure you want to wipe device?");
startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
} else {
// device administrator, can do security operations
mDPM.wipeData(0);
}
} else {
// 2.1
try {
Context foreignContext = this.createPackageContext("com.android.settings", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
Class<?> yourClass = foreignContext.getClassLoader().loadClass("com.android.settings.MasterClear");
Intent i = new Intent(foreignContext, yourClass);
this.startActivityForResult(i, REQUEST_CODE_ENABLE_ADMIN);
} catch (ClassNotFoundException e) {
}
}
@TapanHP、あなたは活動結果のコールバックを処理するだけで任意のIDを使用することができます。
int REQUEST_CODE_ENABLE_ADMIN = 1234;
- 1. ADB Update Factory Reset?
- 2. Androidスタジオ:Reset CountDownTimer
- 3. Bouncycastle Install Provider Programm
- 4. C to Java(バイナリ番号programm)
- 5. Erastotenes Sieve in Paraller programm Java
- 6. RadioButton Reset
- 7. qunit reset timer
- 8. dojo EnhancedGrid reset nestedSort
- 9. git reset remote head
- 10. JavaScript Reset with Condition
- 11. Hololens worldanchorstore reset/persistence
- 12. C#Picturebox Reset
- 13. ドロップダウンリストReset SelectedValue
- 14. sbt - サーバアクセスエラー:Connection reset?
- 15. a4j:poll timer reset
- 16. parse password reset email
- 17. Meteor application reset password
- 18. webdriver + reset Chrome
- 19. php mysql_fetch_array reset
- 20. AngularJS Factoryイベントバインディング
- 21. .factoryは、ファクトリメソッド
- 22. コンバートFactoryパターン
- 23. Export AngularJS factory
- 24. Page factoryデザインパターンselenium
- 25. Python lxml E-Factory
- 26. socket-over-ssh factory
- 27. TestNG @Factory Priority
- 28. ILE RPG programmはコンパイルされません
- 29. C++の桁合計programm whileループ
- 30. Laravel password reset "No Sender"
手動?なぜアプリは*工場出荷時のリセットを実行する権限を必要としますか? – kcoppock
これは本当に面倒なようです。ユーザーが工場出荷時のリセットを望む場合は、それ自体で行うことができます。これらのアクセス許可は非常に良い理由のためにそこにあります。 – Jems
あなたのアプリがこれをしていれば、工場リセット後も消えてしまうでしょう... – kcoppock