首页 > 代码库 > android获取超级权限
android获取超级权限
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个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。