title: Android 4.0 Device Admin Receiver not working
body: <p>I'm trying to build a really simple app to wipe all the user data off a ICS device.</p>
  
  <p>I've tried to create the app using the source code on <a href="http://developer.android.com/guide/topics/admin/device-admin.html" rel="nofollow">http://developer.android.com/guide/topics/admin/device-admin.html</a>
  and
  <a href="http://marakana.com/s/post/1291/android_device_policy_administration_tutorial" rel="nofollow">http://marakana.com/s/post/1291/android_device_policy_administration_tutorial</a></p>
  
  <p>But I'm having an issue, no matter what I do, the broadcast receiver for prompting the user to allow admin does not appear!</p>
  
  <p>Heres what I got so far if anyone can help with this issue.</p>
  
  <p>Manifest:
      
      </p>
  
  <pre><code>&lt;uses-sdk android:minSdkVersion="15" /&gt;
  
  &lt;application android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"&gt;
      &lt;activity     android:name="com.CheckActivityService.CheckActivityServiceActivity"
          android:label="@string/app_name"&gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.MAIN" /&gt;
  
              &lt;category android:name="android.intent.category.LAUNCHER"     /&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
  &lt;/application&gt;
  
  
  &lt;receiver android:name=".mDeviceAdminReceiver"
      android:label="device_admin"     android:permission="android.permission.BIND_DEVICE_ADMIN"&gt;
      &lt;meta-data android:name="android.app.device_admin"
          android:resource="@xml/policies" /&gt;
      &lt;intent-filter&gt;
          &lt;action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /&gt;
      &lt;/intent-filter&gt;
  &lt;/receiver&gt;
  
  
  &lt;/manifest&gt;
  </code></pre>
  
  <p>Activity:</p>
  
  <pre><code>public class CheckActivityServiceActivity extends Activity implements                          OnCheckedChangeListener{
  
   /** Called when the activity is first created. */
  
  static final int ACTIVATION_REQUEST = 1; // identifies our request id
  DevicePolicyManager devicePolicyManager;
  ComponentName deviceAdmin;
  ToggleButton toggleButton;
  static final String TAG = "DevicePolicyActivity";
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
      toggleButton = (ToggleButton) super
          .findViewById(R.id.toggle_device_admin);
      toggleButton.setOnCheckedChangeListener(this);
  
      Button btn = (Button) findViewById(R.id.wipeDataBtn);
      btn.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
              wipeData();
          }
      });
  
      devicePolicyManager = (DevicePolicyManager)     getSystemService(Context.DEVICE_POLICY_SERVICE);
      deviceAdmin = new ComponentName(CheckActivityServiceActivity.this,      mDeviceAdminReceiver.class);
       }
  
  /**
   * Called when the state of toggle button changes. In this case, we send an
   * intent to activate the device policy administration.
   */
  public void onCheckedChanged(CompoundButton button, boolean isChecked) {
          if (isChecked) {
              // Launch the activity to have the user enable our admin.
              Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
              intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdmin);
              intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "My Boss told me     to do this!!");
              startActivityForResult(intent, ACTIVATION_REQUEST);
          }
          Log.d(TAG, "onCheckedChanged to: " + isChecked);
  }
  
  public void wipeData(){
      devicePolicyManager.wipeData(ACTIVATION_REQUEST);
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          switch (requestCode) {
          case ACTIVATION_REQUEST:
                  if (resultCode == Activity.RESULT_OK) {
                          Log.i(TAG, "Administration enabled!");
                          toggleButton.setChecked(true);
                  } else {
                          Log.i(TAG, "Administration enable FAILED!");
                          toggleButton.setChecked(false);
                  }
                  return;
          }
          super.onActivityResult(requestCode, resultCode, data);
  }
  }
  </code></pre>
  
  <p>Reciever:</p>
  
  <pre><code> public class mDeviceAdminReceiver extends DeviceAdminReceiver {
  
      static final String TAG = "DeviceAdminReceiver";
  
      void showToast(Context context, String msg) {
          String status = "TEST";
          Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
      }
  
      /** Called when this application is approved to be a device administrator. */
      @Override
      public void onEnabled(Context context, Intent intent) {
              super.onEnabled(context, intent);
              Toast.makeText(context, "Admin Enabeled",
                              Toast.LENGTH_LONG).show();
              Log.d(TAG, "onEnabled");
      }
  
      /** Called when this application is no longer the device administrator. */
      @Override
      public void onDisabled(Context context, Intent intent) {
              super.onDisabled(context, intent);
              Toast.makeText(context, "Admin Disabled",
                              Toast.LENGTH_LONG).show();
              Log.d(TAG, "onDisabled");
      }
  
      @Override
      public void onPasswordChanged(Context context, Intent intent) {
              super.onPasswordChanged(context, intent);
              Log.d(TAG, "onPasswordChanged");
      }
  
      @Override
      public void onPasswordFailed(Context context, Intent intent) {
              super.onPasswordFailed(context, intent);
              Log.d(TAG, "onPasswordFailed");
      }
  
      @Override
      public void onPasswordSucceeded(Context context, Intent intent) {
              super.onPasswordSucceeded(context, intent);
              Log.d(TAG, "onPasswordSucceeded");
      }
  }
  </code></pre>
  
  <p>If anyone can help me to get this to work, as I really can't figure out why the broadcast receiver isn't firing.</p>