自定义设备管理器程序实现camera控制开启关闭
2016-09-28 13:22
344 查看
1.新建deviceAdminReceiver类
public class deviceAdminReceiver extends DeviceAdminReceiver {
void showToast(Context context, CharSequence text) {
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
@Override
public void onDisabled(Context context, Intent intent) {
// TODO Auto-generated method stub
//super.onDisabled(context, intent);
showToast(context, "设备管理:不可用");
}
@Override
public void onEnabled(Context context, Intent intent) {
// TODO Auto-generated method stub
//super.onEnabled(context, intent);
showToast(context, "设备管理:可用");
}
}
2.res目录下新建一个xml文件夹:res\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 />
<disable-camera />
</uses-policies>
</device-admin>3.Manifest文件中注册reciver
</activity>
<receiver android:name="com.example.deviceadmin.deviceAdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN">
<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>
4.MainActivity代码实现:
public class MainActivity extends Activity {
private static final int RESULT_ENABLE = 0;
DevicePolicyManager devicePolicyManager;
ComponentName mAdminName;
// IDevicePolicyManager
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2.2之前使用反射获得
// Method method = Class.forName("android.os.ServiceManager")
// .getMethod("getService", String.class);
// IBinder binder = (IBinder) method.invoke(null,
// new Object[] { MainActivity.this.DEVICE_POLICY_SERVICE });
// mService = IDevicePolicyManager.Stub.asInterface(binder);
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mAdminName = new ComponentName(this, deviceAdminReceiver.class);
// 判断该组件是否有系统管理员的权限
boolean isAdminActive = devicePolicyManager.isAdminActive(mAdminName);
if(!isAdminActive){
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
mAdminName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"(自定义区域2)");
startActivityForResult(intent, RESULT_ENABLE);
}
}
@SuppressLint("NewApi") @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==RESULT_ENABLE) {
devicePolicyManager.setCameraDisabled(mAdminName, true);
}
}
@Override
public 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 class deviceAdminReceiver extends DeviceAdminReceiver {
void showToast(Context context, CharSequence text) {
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
@Override
public void onDisabled(Context context, Intent intent) {
// TODO Auto-generated method stub
//super.onDisabled(context, intent);
showToast(context, "设备管理:不可用");
}
@Override
public void onEnabled(Context context, Intent intent) {
// TODO Auto-generated method stub
//super.onEnabled(context, intent);
showToast(context, "设备管理:可用");
}
}
2.res目录下新建一个xml文件夹:res\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 />
<disable-camera />
</uses-policies>
</device-admin>3.Manifest文件中注册reciver
</activity>
<receiver android:name="com.example.deviceadmin.deviceAdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN">
<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>
4.MainActivity代码实现:
public class MainActivity extends Activity {
private static final int RESULT_ENABLE = 0;
DevicePolicyManager devicePolicyManager;
ComponentName mAdminName;
// IDevicePolicyManager
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2.2之前使用反射获得
// Method method = Class.forName("android.os.ServiceManager")
// .getMethod("getService", String.class);
// IBinder binder = (IBinder) method.invoke(null,
// new Object[] { MainActivity.this.DEVICE_POLICY_SERVICE });
// mService = IDevicePolicyManager.Stub.asInterface(binder);
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mAdminName = new ComponentName(this, deviceAdminReceiver.class);
// 判断该组件是否有系统管理员的权限
boolean isAdminActive = devicePolicyManager.isAdminActive(mAdminName);
if(!isAdminActive){
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
mAdminName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"(自定义区域2)");
startActivityForResult(intent, RESULT_ENABLE);
}
}
@SuppressLint("NewApi") @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==RESULT_ENABLE) {
devicePolicyManager.setCameraDisabled(mAdminName, true);
}
}
@Override
public 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;
}
}
相关文章推荐
- Centos6.5搭建smokeping服务 推荐
- Cannot change version of project facet Dynamic Web Module to 3.0
- Java面向对象(9)内部类
- android中string.xml中%1$s、%1$d等的用法
- MySQL与MongoDB的操作对比,以及区别
- 微信开发
- iOS开发UI篇—CAlayer(自定义layer)
- Android 之动画实现animation
- iOS 饼状图的封装与实现
- [转] 使用ssh-keygen命令的用法
- Gradle学习参考资料
- UVa 580 Critical Mass
- Almost Arithmetical Progression
- 搭建Hadoop2.5.2+Hive2.1+Mysql
- 一个广告净化大师拦截视频网站片头广告的实现
- iOS开发UI篇—CAlayer层的属性
- EFK日志管理初探
- 高通8937平台手机关机概率卡住问题分析
- Poedu_C语言_lesson17_20160918_运算符简介
- 4519: [Cqoi2016]不同的最小割