android擷取超級許可權

來源:互聯網
上載者:User

標籤:

1. 建立一個廣播,這個擷取許可權是一個廣播操作

        <receiver android:name=".activity.DeviceAdminSample"            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" />  //這個xml檔案是規定了這個超級許可權包含哪些內容,這裡需要再建立的一個xml檔案夾下面去定義            <intent-filter>                  <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />            </intent-filter>        </receiver>

然後是定義那個 @xml/device_admin_sample檔案

<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>

前面的檔案定義好了,下面這個DeviceAdminSample是繼承自一個系統定義的一個廣播類 DeviceAdminReceiver,通過這個廣播來擷取超級許可權

public class DeviceAdminSample extends DeviceAdminReceiver{    void showToast(Context context, String msg) {        String status = context.getString(R.string.admin_receiver_status, msg);        Toast.makeText(context, status, Toast.LENGTH_SHORT).show();    }    @Override    public void onEnabled(Context context, Intent intent) {        showToast(context, context.getString(R.string.admin_receiver_status_enabled));    }    @Override    public CharSequence onDisableRequested(Context context, Intent intent) {        return context.getString(R.string.admin_receiver_status_disable_warning);    }    @Override    public void onDisabled(Context context, Intent intent) {        showToast(context, context.getString(R.string.admin_receiver_status_disabled));    }    @Override    public void onPasswordChanged(Context context, Intent intent) {        showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));    }}

擷取許可權的代碼,通過開啟一個 Intent 對象,這個對象通過系統的 DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN 意圖,開啟擷取系統許可權那個介面讓使用者確定是否授予這些許可權

    public void activeSuperuser(View view) { 
     ComponentName mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);  // 那個DeviceAdminSample就是前面我們定義的廣播類
        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);  // mDeviceAdminSample是        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,  R.string.add_admin_extra_app_text);        startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);  // 開啟授予許可權的那個activity    }

接下來就是在擷取許可權之後通過 DevicePolicyManager來具體操作那些需要許可權的操作了

        DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);  // 擷取系統服務
     if(dpm.isAdminActive(mDeviceAdminSample)){  // 判斷是否已經擷取了超級許可權
      dpm.lockNow();  // 鎖屏
    }

 

android擷取超級許可權

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.