這篇文章主要介紹如何使用程式碼呼叫系統鎖屏.
Step 1: 增加權限
首先要先在AndroidManifest.xml 中增加權限
AndroidManifest.xml1 2
| <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
|
Step 2: 宣告使用權限
在res中新增加xml資料夾, 並在此xml資料夾中新增 lock_screen.xml
lock_screen.xml1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?xml version="1.0" encoding="UTF-8"?> <device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <force-lock /> <reset-password /> <limit-password /> <watch-login /> </uses-policies> </device-admin>
|
Step 3: 新增AdminReceiver.java
AdminReceiver.java1 2 3
| public class AdminReceiver extends DeviceAdminReceiver { private final String TAG = "AdminReceiver"; }
|
AndroidManifest.xml 的設定
AndroidManifest.xml1 2 3 4 5 6 7 8 9 10
| <receiver android:name=".AdminReceiver" android:label="@string/app_name" android:description="@string/app_des" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/lock_screen" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
|
Step 4: 宣告DevicePolicyManager
1 2
| private DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); private ComponentName mComponentName = new ComponentName(this, AdminReceiver.class);
|
Step 5: 取得機器權限
1 2 3 4
| Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "------ 其他描述 ------"); startActivityForResult(intent, 0);
|
Step 6: 呼叫系統密碼鎖屏, 並設定密碼
1 2 3 4
| mDevicePolicyManager.setPasswordQuality(mComponentName, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); mDevicePolicyManager.setPasswordMinimumLength(mComponentName, 5); mDevicePolicyManager.resetPassword("nick6425", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY); mDevicePolicyManager.lockNow();
|
Step 7: 取消密碼鎖屏, 恢復滑動鎖屏
此方法在Android 5.0.x 無法使用, Android 5.1.x已修正
1 2 3
| mDevicePolicyManager.setPasswordQuality(mComponentName, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); mDevicePolicyManager.setPasswordMinimumLength(mComponentName, 0); mDevicePolicyManager.resetPassword("", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
|
Step 8: 取消機器權限
1
| mDevicePolicyManager.removeActiveAdmin(mComponentName);
|