我可以通过单击按钮调用我的功能,没有这样的问题并且它可以工作,也可以擦除数据。
public class MainActivity extends Activity implements OnCheckedChangeListener {
DevicePolicyManager devicePolicyManager;
public void resetdevice(View view) {
Toast.makeText(context, "resetttt", Toast.LENGTH_LONG).show();
// We reset the device - this will erase entire /data partition!
Log.d(TAG,
"RESETing device now - all user data will be ERASED to factory settings");
devicePolicyManager.wipeData(ACTIVATION_REQUEST);
}
但是,为了从其他服务调用此方法,我需要做一些更改。
public class MainActivity extends Activity implements OnCheckedChangeListener {
static DevicePolicyManager devicePolicyManager;
和我的方法
public static void resetdevice(Context context) {
Toast.makeText(context, "resetttt", Toast.LENGTH_LONG).show();
// We reset the device - this will erase entire /data partition!
Log.d(TAG,
"RESETing device now - all user data will be ERASED to factory settings");
devicePolicyManager.wipeData(ACTIVATION_REQUEST);
}
这就是我怎么称呼它
MainActivity.resetdevice(context);
问题是,当我从我的服务中调用它时,它只显示吐司,并且不会执行其余的代码。
答案 0 :(得分:0)
如果您足够好使用事件总线而不是在代码中实现事件总线,并且当您想要调用方法时,来自您服务的fire事件将在您实施的任何地方调用您的方法。
或
当您想要从服务中调用您的方法时,尝试使用广播接收器并发送广播。
答案 1 :(得分:0)
您无法直接从服务中调用活动方法。请使用广播或绑定对象。结帐前一个here
答案 2 :(得分:0)
试试这个:
public static void resetdevice(Context context) {
DevicePolicyManager devicePolicyManager= (DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE);
Toast.makeText(context, "resetttt", Toast.LENGTH_LONG).show();
// We reset the device - this will erase entire /data partition!
Log.d(TAG,
"RESETing device now - all user data will be ERASED to factory settings");
devicePolicyManager.wipeData(ACTIVATION_REQUEST);
}
但我建议按照@jack所说的方式进行。
答案 3 :(得分:0)
您可能需要查看Bound Services。您可以使用此功能通知您Activity
需要使用resetDevice
从Activity
致电Messenger and Handlers
。