Android之——申請應用系統管理員許可權

來源:互聯網
上載者:User

標籤:android   許可權   

轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/47010177  

       把應用程式升級為擁有系統管理員許可權。寫一個廣播接收者,給該廣播接收者去申請系統管理員的許可權,讓作業系統給廣播接收者授權。(啟用系統的授權組件)。在此,本人主要通過申請應用系統管理員許可權,鎖屏,設定密碼,恢復出廠預設值幾個方面來簡單介紹Android中如何給一個應用申請系統管理員的許可權操作。其中,這些主要的功能都是通過Android提供的一個類來完成的,這個類就是DevicePolicyManager,有關這個類的詳細說明,大家可以參考Android的官方文檔,在此,我就不過多闡述了。下面,我們一起來看看如何?這些功能呢?

1、建立my_admin.xml檔案

在Android工程的res目錄下建立xml目錄,在xml目錄下建立my_admin.xml檔案

具體實現如下:

<?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 />        </uses-policies></device-admin>
這個檔案中主要定義了一些要擷取的系統管理員許可權

2、建立布局檔案

這個布局檔案中有一個按鈕,在按鈕的onClick事件中實現相應的功能

具體實現如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="onClick"        android:text="鎖屏" /></RelativeLayout>

3、定義廣播接收者MyAdmin

這個類不同於普通的廣播接收者,它需要繼承DeviceAdminReceiver,有關DeviceAdminReceiver的詳細說明,大家可以參考Android的官方文檔。

具體實現如下

package com.lyz.local.screen.activity;import android.app.admin.DeviceAdminReceiver;/** * 廣播接收者 * @author liuyazhuang * */public class MyAdmin extends DeviceAdminReceiver {}

4、完善MainActivity

在這個類中,主要實現了頁面按鈕的點擊事件,在這個點擊事件中,通過DevicePolicyManager類實現相應的操作

具體代碼如下:

package com.lyz.local.screen.activity;import android.os.Bundle;import android.app.Activity;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.view.Menu;import android.view.View;/** * 程式入口 * @author liuyazhuang * */public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void onClick(View v){//擷取系統管理許可權DevicePolicyManager devicePolicyManager = (DevicePolicyManager) this.getSystemService(Context.DEVICE_POLICY_SERVICE);//申請許可權ComponentName componentName = new ComponentName(this, MyAdmin.class);//判斷該組件是否有系統管理員的許可權boolean isAdminActive = devicePolicyManager.isAdminActive(componentName);if(isAdminActive){//鎖屏devicePolicyManager.lockNow();//重設密碼devicePolicyManager.resetPassword("123", 0);//恢復出廠預設值(建議不要真機測試)devicePolicyManager.wipeData(0);}else{Intent intent = new Intent();//指定動作intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);//指定給哪個組件授權intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);startActivity(intent);}}}

5、註冊BroadReceiver

最後不要忘了在AndroidManifest.xml中註冊BroadReceiver

具體實現如下:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.lyz.local.screen.activity"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="18" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.lyz.local.screen.activity.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>                <receiver android:name=".MyAdmin"><meta-data android:name="android.app.device_admin"android:resource="@xml/my_admin" /><intent-filter><action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /></intent-filter></receiver>    </application></manifest>

6、運行效果

1、展示應用授權管理員權限


2、點擊鎖屏

3、輸入密碼

4、卸載應用出現的問題即解決方案


溫馨提示:大家可以到連結http://download.csdn.net/detail/l1028386804/8924361擷取完整Android範例程式碼

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

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.