2013-01-07 2 views
1

ICS 장치에서 모든 사용자 데이터를 지우는 아주 간단한 앱을 만들려고합니다.Android 4.0 장치 관리자 수신기가 작동하지 않습니다.

나는 http://developer.android.com/guide/topics/admin/device-admin.htmlhttp://marakana.com/s/post/1291/android_device_policy_administration_tutorial

에 소스 코드를 사용하여 응용 프로그램을 만들려고했습니다하지만 문제가 있어요, 아무리 내가 뭘, 관리 할 수 ​​있도록 사용자에게 메시지를 표시하기위한 방송 수신기 보이지 않는다!

누군가가이 문제에 도움을 줄 수 있다면 지금까지 내가 무엇을 얻었 는가.

매니페스트 :

<uses-sdk android:minSdkVersion="15" /> 

<application android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name"> 
    <activity  android:name="com.CheckActivityService.CheckActivityServiceActivity" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER"  /> 
     </intent-filter> 
    </activity> 
</application> 


<receiver android:name=".mDeviceAdminReceiver" 
    android:label="device_admin"  android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    <meta-data android:name="android.app.device_admin" 
     android:resource="@xml/policies" /> 
    <intent-filter> 
     <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
    </intent-filter> 
</receiver> 


</manifest> 

활동 :

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); 
} 
} 

리시버는 : 사람이 나에게,이 작업을 얻을하는 데 도움이 될 수있는 경우

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"); 
    } 
} 

나는 정말 할 수 없습니다 왜 방송 수신기가 발사되지 않는지 알아 내십시오.

답변

1

내게 어리 석다는 문제를 발견했습니다.

은 수신기에 요소를 넣는 데 필요합니다.

관련 문제