標籤: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之——申請應用系統管理員許可權