Android一鍵鎖屏程序實例

jopen 11年前發布 | 43K 次閱讀 Android Android開發 移動開發

       據筆者了解,所有的android手機都用電源鍵來手動鎖屏。筆者使用手機時,一天之內手動鎖屏的次數絕對不少于30次。如果都用電源鍵來進行的話,那么電源鍵的使用壽命一定不會長久。

雖然現在有很多的桌面軟件都集成了一鍵鎖屏,但是要安裝這些軟件就必須安裝它們的其他組件,這點讓人很不爽,因為他們會定期自動更新,或者在后臺運行一些我不想要的東西。所以我決定自己寫一個鎖屏程序。

經過在android開發文檔里面的查找,我發現從android 2.2開始,API里面就包含了一個lockNow方法(android.app.admin.DevicePolicyManager包中),鎖屏程序可以通過這個方法實現。


在正式寫代碼之前,我們有兩個需要了解的類:

1、  DevicePolicyManager

顧名思義,這個類的作用是管理設備。通過這個類,我們可以實現屏幕鎖定、亮度調節甚至是恢復出廠設置等功能。

2、  DeviceAdminReceiver

這個類的父類是BroadcastReceiver,通過其OnReceive方法可以根據不同的Action執行不同的動作。

這個程序的開發過程大致如下:

1、  要想使用DevicePolicyManager中的方法,首先要定義一個Component。然后通過管理這個組件來啟動一個DeviceAdminReceiver。

注冊一個廣播,用于監聽權限的變化,代碼在AndroidMenifest.xml文件中:

<receiver android:name=".LockScreenAdmin" android:label="@string/app_name"  
    android:description="@string/app_name" android:permission="android.permission.BIND_DEVICE_ADMIN">  
    <meta-data android:name="android.app.device_admin"  
        android:resource="@xml/lock_screen_admin" />  
    <intent-filter>  
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />  
    </intent-filter>  
</receiver>  

其中,permission表示此功能所需的權限;android:name="android.app.device_admin"表示這個動作的跳轉界面;而android:resource="@xml/lock_screen_admin"所指向的內容如下:

<device-admin  
  xmlns:android="http://schemas.android.com/apk/res/android">  
    <uses-policies>  
        <force-lock />  
    </uses-policies>  
</device-admin>  

1、  實現一個繼承自DeviceAdminReceiver的類,實現必須的方法。這個類基本不用寫代碼,在此略過不表。

2、  以下是關鍵代碼。

這段代碼用來在第一次運行的時候激活component,只要激活一次之后,這個component就會一直是激活的。使用startActivityForResult()可以在onResult方法中調用lockNow()來鎖屏,當不是第一次運行的時候,直接調用lockNow()鎖屏。

if (mDevicepolicymanager.isAdminActive(mComponentname)) {  
            mDevicepolicymanager.lockNow();  
            finish();  
        } else {// 第一次運行程序   
            Intent intent = new Intent(  
                    DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);  
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,  
                    mComponentname);  
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,  
                    "One key lock screen need to active");  
            startActivityForResult(intent, RESULT_ENABLE);  
        }  

至此,鎖屏程序的主要部分就講完了。


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!