2

最近、ロック画面のウィジェット アプリを作成しています。常に例外があります。

( 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);
    }
}
4

2 に答える 2

-1

試す:

if(Build.VERSION.SDK_INT > 8){
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
于 2013-02-26T09:22:15.440 に答える