2014-07-12 2 views
0

내 앱에는 두 가지 활동이 있습니다.다른 활동에서 DevicePolicyManager라는 매개 변수를 사용하여 funtction을 호출하려면 어떻게해야합니까?

활동 내가 잠금 화면 함수를 호출 할 수 있습니다

 adminComponent = new ComponentName(MainActivity.this,PermissionReceiver.class); 
     policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 

     if (policyManager.isAdminActive(adminComponent)) { 
      lockScreen(policyManager); 
     } 

A, 그것은 잘 작동하지만 가 어떻게 활동 B에서이 함수를 호출 할 수 있습니다? 나는 활동 B

DevicePolicyManager policyManager = (DevicePolicyManager) getSystemService(MainActivity.DEVICE_POLICY_SERVICE); 
lockScreen(policyManager); 

이 코드를 시도하지만 난 예외를 얻을 07-12 22:38:36.939: E/AndroidRuntime(14061): java.lang.SecurityException: No active admin owned by uid 10245 for policy #3

잠금 화면 기능

public void lockScreen(final DevicePolicyManager aPolicyManager) { 
    final PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    final Handler handler = new Handler(getMainLooper()); 
    final int[] retryCount = new int[] { 0 }; 

handler.post(new Runnable() { 
    @SuppressWarnings("deprecation") 
    @Override 
    public void run() { 
     if (powerManager.isScreenOn()&& retryCount[0] <= MAX_RETRY_COUNT) { 
      aPolicyManager.lockNow(); 
      //unregisterReceiver(turnOffScreenReciever); 
      retryCount[0]++; 
      handler.postDelayed(this, RETRY_DELAY * retryCount[0]); 
     } else { 
      finish(); 
     } 
    } 
}); 

}

그것은이 링크의 질문 비슷 Cannot always launch DevicePolicyManager activity from another activity하지만 최종 답변을 얻지 못합니다. 누구든지 나를 도울 수 있습니까?

답변

0

나는 더 많은 시간을 보냈습니다. 마지막으로, 나는 해결책 활동 B에서이 코드 흐르는이, 난 그냥 잘 작동, 사람을 감사 사용자들은

policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 
     adminComponent = new ComponentName(this,PermissionReceiver.class); 
     if (policyManager.isAdminActive(adminComponent)) { 
      lockScreen(policyManager); 
     } 

처럼 할 필요가!

관련 문제