Android Device Administration 裝置管理員——一鍵鎖屏的實現

來源:互聯網
上載者:User

標籤:

Android Device Administration 裝置管理員——鎖屏的實現

最近研究了一下安全這一塊的內容,當然,我是比較水的,所以也拿不出什麼好知識點,但是有一些冷門的東西我還是可以聊聊的,就拿這個鎖屏來說吧,我們現在市面上有一些一鍵鎖屏的軟體

我們可以看到,是數不勝數的,所以,其實他一開始使用的時候,都需要請求裝置管理員

我們可以看到,只有當我們啟用的時候,我們才可以使用它,那麼,他到底是什麼東西呢?其實,當我們啟用之後,我們可以在我們手機的設定——安全——裝置管理員裡面看到他的所有資訊

我們帶著這個疑問,開啟我們的android api指南看看

  • 地址:http://www.android-doc.com/guide/topics/admin/device-admin.html
一.裝置管理

Android 2.2引入了公司專屬應用程式程式提供支援 Android裝置管理API。 裝置管理API提供了裝置 系統級管理功能。 這些api允許您建立安全性敏感的應用程式用於企業設定,例如, 內建Android電子郵件應用程式利用了新的api來改善 交換的支援。 通過電子郵件應用程式中,管理員可以交換 執行密碼原則——包括字母數字密碼或數字 針,在裝置管理員也可以遠程擦除(即 恢複工廠預設值丟失或被盜的手機。 使用者可以交換同步 他們的電子郵件和行事曆資料。

二.裝置管理API概述

下面的例子類型的應用程式,可以使用裝置管理API:

  • 電子郵件用戶端。
  • 遠程擦除資料的安全應用程式
  • 裝置管理服務和應用程式。
三.它是如何工作的

你使用的裝置管理API編寫裝置管理應用程式的使用者 安裝在他們的裝置上。 裝置管理應用程式執行所需的政策。

  • 系統管理員寫一個裝置管理應用程式執行 遠程/本地裝置安全性原則。 這些政策可能是硬式編碼 應用程式或應用程式可以動態地從第三方擷取政策伺服器。

  • 應用程式安裝在使用者的裝置上。 但是Android確實目前沒有一個自動設定解決方案。 系統管理員可能的一些方法分發應用程式使用者如下:

    • Google play
    • 其他商店
    • 其他方式,比如郵件或者網站
  • 系統提示使用者啟用裝置管理應用程式, 當發生這種情況取決於應用程式是如何?的。

  • 一旦使用者啟用裝置管理應用程式,它們是其政策。遵守這些政策通常帶來好處,比如 對敏感系統和資料的訪問。

如果使用者不啟用裝置管理應用程式,它仍然是在裝置上,但是在一個不活躍的狀態。 使用者將不受其政策,他們將針對積極心態相反沒有得到任何應用程式的例子,他們可能無法同步資料。

如果使用者未能遵守政策(例如,如果一個使用者佈建一個 密碼,違反了準則),它是由應用程式來決定 如何處理這個問題。 然而,這通常會導致使用者不 能同步資料。

如果一個裝置試圖串連到伺服器,需要政策 在裝置管理API,支援串連不會 被允許。 裝置管理API目前並不允許部分 供應。 換句話說,如果一個裝置(例如,一個遺留裝置) 不支援所有的既定政策,允許沒有辦法 裝置串連。

如果一個裝置包含多個管理員啟用應用程式,嚴格的政策 執行。 沒有辦法目標特定的管理 應用程式。

卸載現有裝置管理應用程式中,使用者需要 先登出程式作為管理員。

翻譯有點蹩腳哈,但是大概的意思就是你啟用之後他就是一個政策,但是你不啟用,也是可以的,只是出於靜止狀態,卸載這個應用之前你就需要先登出裝置管理許可權

那我們應該怎麼做呢?他的政策比較多,我們大致的看一下

四.一鍵鎖屏

OK,我們說了這麼多概念,倒不如直接用代碼說明

  • 接下來我們就跟隨者文檔來實現

其實官方文檔說的十分的詳細,首先我們要定義一個Receiver讓他繼承DeviceAdminReceiver,我們暫時不是實現它

package com.lgl.lockone;import android.app.admin.DeviceAdminReceiver;/** * 鎖屏 * Created by LGL on 2016/7/24. */public class LockReceiver extends DeviceAdminReceiver{}

然後我們需要定義資訊清單檔

 <receiver android:name=".LockReceiver"            android:label="@string/sample_device_admin"            android:description="@string/sample_device_admin_description"            android:permission="android.permission.BIND_DEVICE_ADMIN">            <meta-data android:name="android.app.device_admin"                android:resource="@xml/device_admin_sample" />            <intent-filter>                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />            </intent-filter>        </receiver>

這裡有必要要說一下了,首先是label,說標題,這個應該大家都知道,然後是description描述,當你啟用裝置的時候就會去請求,你就可以看到了,最後要綁定一個許可權檔案,我們在res下new一個xml檔案夾,建立一個device_admin_sample

<?xml version="1.0" encoding="utf-8"?><device-admin xmlns:android="http://schemas.android.com/apk/res/android">    <uses-policies>        <limit-password />        <watch-login />        <reset-password />        <force-lock />        <wipe-data />        <expire-password />        <encrypted-storage />        <disable-camera />    </uses-policies></device-admin>

OK,這些做完了之後我們先去最簡單的實現一下鎖屏,需要用到DevicePolicyManager

package com.lgl.lockone;import android.app.admin.DevicePolicyManager;import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    private Button btnLock;    private DevicePolicyManager mDPM;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //裝置政策管理器        mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);        btnLock = (Button) findViewById(R.id.btnLock);        btnLock.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //鎖屏                mDPM.lockNow();            }        });    }}

其實這裡就一個按鈕,然後去lockNow請求鎖屏,但是你會發現,他報錯了,提示是沒有許可權,這個許可權可以不是使用者的許可權,我們去裝置管理員裡面看一下

這裡,就有我們的應用了,上面就是我們在清單裡面定義的標題和描述了,我們勾選上,再去實現鎖屏,你會發現就可以了,這就是需要我們手動去開啟了,但是使用者大多數是不會知道這回事的,所以我們一啟動程式我們應該就去啟用,文檔上其實也已經寫了,我們來看

ComponentName mDeviceAdminSample = new ComponentName(this, LockReceiver.class);        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,                "我是不是很帥");        startActivity(intent);

然後我們再來看下效果

而且我們可以更改鎖屏密碼

 //重設密碼 mDPM.resetPassword("12345678", 0);

如果傳空串那就說明不要密碼,我們可以再次運行一下

OK,我們來看下首頁的邏輯吧

package com.lgl.lockone;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    private Button btnLock;    private DevicePolicyManager mDPM;    private ComponentName mDeviceAdminSample;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mDeviceAdminSample = new ComponentName(this, LockReceiver.class);        //裝置政策管理器        mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);        btnLock = (Button) findViewById(R.id.btnLock);        btnLock.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (mDPM.isAdminActive(mDeviceAdminSample)) {                    //鎖屏                    mDPM.lockNow();                    //重設密碼                    mDPM.resetPassword("123456", 0);                } else {                    Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);                    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);                    intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,                            "我是不是很帥");                    startActivity(intent);                }            }        });    }}

基本上沒什麼代碼,如果大家有興趣可以加群

通往Android的神奇之旅:555974449Demo下載:正在上傳

Android Device Administration 裝置管理員——一鍵鎖屏的實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.