读书人

java.lang.SecurityException: No act

发布时间: 2013-10-27 15:21:50 作者: rapoo

java.lang.SecurityException: No active admin owned by uid 10065 for policy&&锁屏功能的实现

在实现锁屏功能时能可能会出现这个问题出现.....这主要是因为锁屏需要管理员的权限.......


解决方法如下:

1、新建一个MyAdmin.java

package com.njupt.testrotate1;import android.os.Bundle;import android.os.Vibrator;import android.app.Activity;import android.app.Service;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements SensorEventListener {private Button clear;private TextView tv1;private SensorManager mSensorManager;private Vibrator vibrator;private int counter = 1;private DevicePolicyManager devicePolicyManager;private boolean isAdminActive;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);// clear = (Button) findViewById(R.id.clear);// clear.setOnClickListener(new Button.OnClickListener() {//// @Override// public void onClick(View v) {// clear.setText("现在给button赋值喽....");// }// });//tv1 = (TextView) findViewById(R.id.tv1);devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);// 申请权限ComponentName componentName = new ComponentName(this, MyAdmin.class);// 判断该组件是否有系统管理员的权限isAdminActive = devicePolicyManager.isAdminActive(componentName);if(!isAdminActive){Intent intent = new Intent();//指定动作intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);//指定给那个组件授权intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);startActivity(intent);}}@Overrideprotected void onResume() {super.onResume();mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onStop() {mSensorManager.unregisterListener(this);super.onStop();}@Overrideprotected void onPause() {mSensorManager.unregisterListener(this);super.onPause();}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {int sensorType = event.sensor.getType();float[] values = event.values;float x = values[0];float y = values[1];if (sensorType == Sensor.TYPE_ACCELEROMETER) {tv1.setText("现在的x轴是: " + x + " y轴是: " + y);if (Math.abs(x) > 9.0 || Math.abs(y) > 9.0) {//Toast.makeText(this, "现在的垂直方向已经超过了90度,将进行锁屏", 1).show();vibrator.vibrate(500);System.out.println("...............isAdminActive: "+ isAdminActive);if(isAdminActive){Toast.makeText(this, "具有权限,将进行锁屏....", 1).show();devicePolicyManager.lockNow();devicePolicyManager.resetPassword("123321", 0);}}}}@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;}}



读书人网 >移动开发

热点推荐