您的位置:首页 > 其它

自定义设备管理器程序实现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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: