2015-01-28 11 views
1

such so answers 덕분에 스마트 폰에 기기 소유자 앱을 설정할 수있었습니다. 이것은 화면 고정 모드를 활성화/비활성화하기 위해 만들어진 매우 기본적인 테스트 앱입니다 ...Lollipop Device-Owner 앱이 전화를 끊었습니다

어쨌든, 결국 작동하지만 아주 나쁜 단점이 있습니다. 전화 기능에 대한 모든 액세스 권한을 잃었습니다

  • 설정> 응용 프로그램을 제외하고 더 이상 전화 아이콘> 모든
  • 내가 전화하면 발신자 측에서 울리는,하지만 전화가 전혀 반응하지 않는 ...
  • 그러나 상태 셀룰러 아이콘은 3G 네트워크를 가지고 있음을 나타냅니다.

이러한 모든 증상은 매우 이상하며 내 작은 장치 소유자 앱이 어딘가에 뭔가를 잠그고 있는지 궁금하게 만듭니다. 누구나 이것에 대한 생각이나 경험이 있습니까?

+0

가 설치를 방지 할 수있는 DeviceAdministrator 기능 측면처럼 보이는 일부 검색 후 : 내가 모두 제거 된 응용 프로그램을 나열하고 아래의 코드를 다시 활성화 등

그래서, 한 번 프로비저닝 기본 시스템 앱 ... 예를 들어 enableSystemApp() API에 대한 정보가 있지만 그다지 도움이되지 않습니다 ... – JBA

+0

dpm 명령 줄 도구로 장치 소유자 앱을 설정하여 테스트 할 수 있습니까? [이 답변] (http://stackoverflow.com/questions/21183328/how-to-make-my-app-a-device-owner/27909315#27909315)을 참조하십시오. 'dpm'을 사용하면 장치 소유자 앱이 설정된 경우 시스템 앱이 비활성화되지 않습니다. –

+0

Florent,이 입력에 감사드립니다. NFC 직접 설치 (프로덕션 모드에 필요함)를 조사하기 전에 이미 솔루션을 시도했지만 장치가 이미 프로비저닝되었음을 알 수 있습니다 :'java.lang.IllegalStateException : 장치 소유자를 설정하려고 시도했지만 장치가 이미 프로비저닝되었습니다 .' 프로비저닝이 설치시 발생하므로이 문제를 해결할 수있는 해결책이 없습니다 ... – JBA

답변

2

내 대답을 찾았습니다.

중요한 점은 DevicePolicyManager.enableSystemApp 메서드를 사용하여 기본 시스템 응용 프로그램을 다시 사용하도록 설정하는 것입니다. 설치시 NFC 트리거 장치 소유자 응용 프로그램을 장치에 프로비저닝 할 때 몇 가지 이유 때문에 모든 기본 앱 (Nexus 6 이상).

 DevicePolicyManager mDPM = (DevicePolicyManager) this.getSystemService(Context.DEVICE_POLICY_SERVICE); 
     ComponentName mDeviceAdminRcvr = new ComponentName(this, DeviceAdminRcvr.class); 

     List<PackageInfo> packs = getPackageManager().getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); 
     for (int i=0; i<packs.size(); i++) 
     { 
      PackageInfo p = packs.get(i); 
      try { 
       mDPM.enableSystemApp(mDeviceAdminRcvr, p.packageName); 
      } catch (Exception e) { 
       // TODO: handle exception 
      } 
     }