android 장치 관리자(사용자 가 활성화 되 어야 사용 할 수 있 음 을 알려 줍 니 다)--DevicePolicyManager:

14611 단어 Android
1.android 장치 관리자(사용자 활성화 알림 만 사용 가능)-DevicePolicyManager:
세 종류 까지 사용:
DevicePolicy Manager 암호 가 정의 하 는 길이,암호 에 대문자,소문 자 등 비밀 번 호 를 설정 할 때 만족 해 야 할 규범,장 치 를 잠 그 거나 모든 사용자 데 이 터 를 제거 할 지 여부, DeviceAdminReceiver 방법:
1.잠 금 화면 조작
  mDevicePolicyManager.lockNow()
진행2. 스크린 조명 이 어 두 워 지 는 시간 설정 관련
  long timeout = 1000L * Long.parseLong(et.getText().toString()); 
  mDevicePolicyManager.setMaximumTimeToLock(mDeviceComponentName, timeout); 
  mDevicePolicyManager.wipeData(0);
3.  출고 재 개 설치
  mDevicePolicyManager.wipeData(0);

DeviceAdmin Receiver 와 같은 종 류 는 BroadcastReceiver 에서 계승 합 니 다.소스 코드 를 통 해 알 수 있 듯 이 사실은 OnReceive 방법 을 실현 한 것 이다.이 방법 은 서로 다른 Action 에 따라 해당 하 는 조작 을 집행 한다.예 를 들 어 활성화 에 성공 하면 Action 은 ACTION 입 니 다.DEVICE_ADMIN_ENABLED,이에 따라 onEnabled 방법 을 호출 합 니 다.
DeviceAdmin Info 는 장치 정보,Info,즉 Information 를 포함 하고 있 습 니 다.허,함부로 추측 해도 알 수 있 습 니 다.그 안에 어떤 속성 이 있 는 지 는 그때 친구 들 이 직접"...................................................

실현 절차:
1.androidmanifest.xml 에 라디오 클래스 를 등록 하여 감청 권한 의 변화
  
  <receiver
      android:name=".AdminReceiver"
      android:description="@string/description"
      android:label="@string/labelValue"
      android:permission="android.permission.BIND_DEVICE_ADMIN"
      >
       <meta-data 
          android:name="android.app.device_admin"
          android:resource="@xml/lockourscreen"/>
      <intent-filter>
          
          <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
      intent-filter>

  receiver>
관리 권한 을 만 드 는 목록:->res 의 폴 더 아래 xml 폴 더 를 만 들 고 lockourscreen.xml
   
       
       <device-admin
         xmlns:android="http://schemas.android.com/apk/res/android">
           <uses-policies>
               
               <force-lock />

               
                    
                    <wipe-data /> 
                    
                       <reset-password />
                    
                    <limit-password /> 
                    
                      <watch-login />

           uses-policies>
       device-admin>
의 중간 내용 을 만 들 지 않 아 도 됩 니 다.이 부분 은 시스템 이 주 는 제시 어 이기 때문에 우 리 는 스스로 프로그램 을 만 들 때 자신 이 쓰 고 싶 은 내용 을 입력 할 수 있다.

3.방송 류 deviceAdminReceiver 를 만 들 고 DeviceAdminReceiver 를 계승 하 며 해당 하 는 방법 을 실현 합 니 다.

package com.xiaoma.www;

import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class AdminReceiver extends DeviceAdminReceiver {
	@Override
	public DevicePolicyManager getManager(Context context) {
		Log.i("XiaoMaGuo", "   getManager()  ");
		return super.getManager(context);
	}
	@Override
	public ComponentName getWho(Context context) {
		Log.i("XiaoMaGuo", "   getWho()  ");
		return super.getWho(context);
	}
	
	/**
	 *   
	 */
	@Override
	public void onDisabled(Context context, Intent intent) {
		Log.i("XiaoMaGuo", "   onDisabled()  ");
		Toast.makeText(context, "      ", Toast.LENGTH_SHORT).show();
		
		super.onDisabled(context, intent);
	}
	@Override
	public CharSequence onDisableRequested(Context context, Intent intent) {
		Log.i("XiaoMaGuo", "   onDisableRequested()  --         ,           ");
		return super.onDisableRequested(context, intent);
	}
	
	/**
	 *   
	 */
	@Override
	public void onEnabled(Context context, Intent intent) {
		Log.i("XiaoMaGuo", "   onEnabled()  ");
		Toast.makeText(context, "      ", Toast.LENGTH_SHORT).show();
		
		super.onEnabled(context, intent);
	}
	@Override
	public void onPasswordChanged(Context context, Intent intent) {
		Log.i("XiaoMaGuo", "   onPasswordChanged()  --    :      ");
		super.onPasswordChanged(context, intent);
	}
	@Override
	public void onPasswordFailed(Context context, Intent intent) {
		Log.i("XiaoMaGuo", "   onPasswordFailed()  ");
		super.onPasswordFailed(context, intent);
	}
	@Override
	public void onPasswordSucceeded(Context context, Intent intent) {
		Log.i("XiaoMaGuo", "   onPasswordSucceeded()  ");
		super.onPasswordSucceeded(context, intent);
	}
	@Override
	public void onReceive(Context context, Intent intent) {
		Log.i("XiaoMaGuo", "   onReceive()  ");
		super.onReceive(context, intent);
	}
	@Override
	public IBinder peekService(Context myContext, Intent service) {
		Log.i("XiaoMaGuo", "   peekService()  ");
		return super.peekService(myContext, service);
	}
	
}

  • 4.관련 관리 권한 을 활성화 하 는 작업
      Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
    
      //    
      //EXTRA_DEVICE_ADMIN            , 
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
    
      //  (additional explanation)
      //EXTRA_ADD_EXPLANATION        
      intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "--   ,   ,     --");
    
      startActivityForResult(intent, 0);
    

  • package com.xiaoma.www;
    
    import com.xiaoma.www.R;
    
    import android.app.Activity;
    import android.app.admin.DevicePolicyManager;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    
    /**  
    * @Title: DevicePolicyManagerDemoActivity.java
    * @Package com.xiaoma.www
    * @Description:      
    * @author MZH
    * @version V2.2
    */
    public class DevicePolicyManagerDemoActivity extends Activity {
    	
    	private Button startPermissionBtn;
    	private Button stopPermissionBtn;
    	private Button sysLockBtn;
    	
    	private DevicePolicyManager dpm;
    	private ComponentName componentName ;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //   
            init();
        }
        
        /**
         *      
         */
        private void init(){
        	//      
        	startPermissionBtn = (Button)findViewById(R.id.button1);
        	stopPermissionBtn = (Button)findViewById(R.id.button2);
        	sysLockBtn = (Button)findViewById(R.id.button3);
        	
        	startPermissionBtn.setOnClickListener(listener);
        	stopPermissionBtn.setOnClickListener(listener);
        	sysLockBtn.setOnClickListener(listener);
        	
        	//      
        	dpm  = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
        	componentName = new ComponentName(this, AdminReceiver.class);
        	
        }
        
        
        /**
         *         ,      ,                        
         *        ,     ,          ,           
         *                  ,  。。
         */
        private OnClickListener listener = new OnClickListener() {
    		@Override
    		public void onClick(View v) {
    			//                
    			switch (v.getId()) {
    			case R.id.button1:
    				//      
    				startDeviceManager();
    				break;
    			case R.id.button2:
    				//      
    				stopDeviceManager();
    				break;
    			case R.id.button3:
    				//     
    				sysLock();
    				break;
    			default:
    				break;
    			}
    		}
    	};
    	
    	
    	/**
    	 *         
    	 */
    	private void startDeviceManager(){
    		//        ,          
    		//  Intent (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)          
    		//        EXTRA_DEVICE_ADMIN 、 EXTRA_ADD_EXPLANATION
    		Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
    		
    		//    
    		//EXTRA_DEVICE_ADMIN            , 
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
            
            //  (additional explanation)
            //EXTRA_ADD_EXPLANATION        
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "--   ,   ,     --");
            
            startActivityForResult(intent, 0);
            
    		}
    	
    	/**
    	 *             
    	 */
    	private void stopDeviceManager(){
    		Log.i("XiaoMaGuo","------ unActiveManage ------");
    		boolean active = dpm.isAdminActive(componentName);
            if (active) {
            	dpm.removeActiveAdmin(componentName);
            }
    	}
    	
    	/**
    	 *          
    	 */
    	private void sysLock(){
            boolean active = dpm.isAdminActive(componentName);
            if (active) {
            	dpm.lockNow();
            }
    	}
    	/**
    	 * manager pwd setting
    	 */
    	/*private void updatePolicies() { 
    		 SharedPreferences prefs = getSamplePreferences(this); 
    		 final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY, 
    		 DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); 
    		 final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0); 
    		 final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0); 
    		  
    		 boolean active = dpm.isAdminActive(componentName); 
    		 if (active) { 
    			 dpm.setPasswordQuality(componentName, pwQuality); 
    			 dpm.setPasswordMinimumLength(componentName, pwLength); 
    			 dpm.setMaximumFailedPasswordsForWipe(componentName, maxFailedPw); 
    		 } 
    		} */
    	/**
    	 * update pwd
    	 */
    	/*private void updatePolicies() {
    		 SharedPreferences prefs = getSamplePreferences(this);
    		 final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY,
    		 DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
    		 final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0);
    		 final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0);
    		 
    		 boolean active = dpm.isAdminActive(componentName);
    		 if (active) {
    			 dpm.setPasswordQuality(componentName, pwQuality);
    			 dpm.setPasswordMinimumLength(componentName, pwLength);
    			 dpm.setMaximumFailedPasswordsForWipe(componentName, maxFailedPw);
    		 }
    		}*/
    	
    }
    

  • 5.잠 금 화면 을 실현 하고 mDevice Policy Manager.lockNow()를 작 동 합 니 다.



  • 두 선배 님 의 코드 참고:
    http://mzh3344258.blog.51cto.com/1823534/748998
    http://blog.sina.com.cn/s/blog_46c97a9d0100ydr1.html

    좋은 웹페이지 즐겨찾기