閱讀742 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Android一鍵鎖屏開發全過程

一、項目簡介:

項目:《Android 一鍵鎖屏》

開發周期:4天

代碼量:100行

————————————————————————

二、項目流程:

 



001 三、項目代碼
002 1、主程序代碼:
003 Java代碼 
004 private DevicePolicyManager policyManager; 
005 private ComponentName componentName; 
006    
007 @Override 
008 protected void onCreate(Bundle savedInstanceState) { 
009         super.onCreate(savedInstanceState); 
010         setContentView(R.layout.locklayout); 
011            
012         //獲取設備管理服務 
013         policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 
014            
015         //AdminReceiver 繼承自 DeviceAdminReceiver 
016         componentName = new ComponentName(this, AdminReceiver.class); 
017            
018         mylock(); 
019     //  killMyself ,鎖屏之後就立即kill掉我們的Activity,避免資源的浪費;    
020         android.os.Process.killProcess(android.os.Process.myPid());     
021            
022
023   
024 2、其中,mylock()為:
025 Java代碼 
026 private void mylock(){ 
027        
028     boolean active = policyManager.isAdminActive(componentName); 
029     if(!active){//若無權限 
030         activeManage();//去獲得權限 
031         policyManager.lockNow();//並鎖屏 
032     
033     if (active) { 
034             policyManager.lockNow();//直接鎖屏 
035     
036
037  3、activeManage()代碼為:
038 Java代碼 
039 private void activeManage() { 
040         // 啟動設備管理(隱式Intent) - 在AndroidManifest.xml中設定相應過濾器 
041         Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
042            
043         //權限列表 
044         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); 
045    
046         //描述(additional explanation) 
047                 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "------ 其他描述 ------"); 
048    
049                 startActivityForResult(intent, 0); 
050
051   
052 4、AndroidManifest.xml
053 Java代碼 
054 <?xml version="1.0" encoding="utf-8"?> 
055 <manifest xmlns:android="https://schemas.android.com/apk/res/android" 
056       package="cn.hnu" 
057       android:versionCode="1" 
058       android:versionName="1.0"
059     <application android:icon="@drawable/icon" android:label="@string/app_name"
060         <activity android:name=".LockFirst" 
061                   android:label="@string/app_name"
062             <intent-filter> 
063                 <action android:name="android.intent.action.MAIN" /> 
064                 <category android:name="android.intent.category.LAUNCHER" /> 
065             </intent-filter> 
066         </activity> 
067         <!-- 設備管理 --> 
068         <receiver android:name=".AdminReceiver" 
069                   android:label="@string/app_name" 
070                   android:description="@string/app_name" 
071                   android:permission="android.permission.BIND_DEVICE_ADMIN"
072                 <meta-data android:name="android.app.device_admin" 
073                            android:resource="@xml/lock_screen" /> 
074                    <intent-filter> 
075                         <action 
076                            android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
077                    </intent-filter> 
078         </receiver> 
079     </application> 
080        
081    
082 </manifest>  
083  5、其中lock_screen.xml(lock_screen.xml文件放在res/xml文件夾下)代碼為:
084 Java代碼 
085 <?xml version="1.0" encoding="UTF-8"?>  
086 <device-admin 
087   xmlns:android="https://schemas.android.com/apk/res/android"
088     <uses-policies> 
089         <!-- 強行鎖定  在裏僅這個是需要的--> 
090         <force-lock /> 
091         <!-- 清除所有數據(恢複出廠設置) --> 
092         <wipe-data /> 
093          <!-- 重置密碼 --> 
094         <reset-password /> 
095         <!-- 限製密碼選擇 --> 
096          <limit-password /> 
097          <!-- 監控登錄嚐試 --> 
098           <watch-login /> 
099     </uses-policies> 
100 </device-admin>

四、項目預覽

    

 請求權限界麵

 



 鎖屏成功

 

五、附注

   程序運行在android2.2以上平台(含2.2)

最後更新:2017-04-03 22:15:47

  上一篇:go 關於RMI服務端端口定製的處理辦法
  下一篇:go C++參數傳遞方式