最近、ロック画面のウィジェット アプリを作成しています。常に例外があります。
( java.lang.SecurityException: No active admin owned by uid 10034 for policy #3)
多くの方法を試しましたが、例外を排除できません。条件が整った時点でロック画面の目的を実現する活動を開始します。
public class tempActivity extends Activity {
private static final String TAG = "tempActivity";
private DevicePolicyManager policyManager;
private ComponentName componentName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.temp);
Log.e(TAG, "Activity created~");
policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(this, AdminReceiver.class);
mylock();
}
private void mylock() {
boolean active = policyManager.isAdminActive(componentName);
if (!active) { // Without permission
Log.e(TAG, "No authority~");
activeManage(); // To get access
policyManager.lockNow(); // And lock screen
} else {
Log.e(TAG, "Has authority");
policyManager.lockNow(); // lock screen directly
}
this.finish();
}
private void activeManage() {
Log.e(TAG, "activeManage");
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "developers:liushuaikobe");
startActivityForResult(intent, 1);
}
}