2016-07-15 2 views
1

사용자 요청없이 startLockTask()를 활성화하려고합니다. 그래서 처음에 나는 이것을 Device Administration 으로 읽고 작은 샘플 응용 프로그램을 만듭니다. 결과에서 나는 장치 관리자 목록에서 내 응용 프로그램을 가지고 있지만 startLockTask()를 호출하면 조용한 모드로 실행되지 않습니다.요청 사용자 작업이없는 startLockTask()

DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 
    String[] packages = {this.getPackageName()};       
    myDevicePolicyManager.setLockTaskPackages(deviceAdminComponentName, packages); 
    startLockTask(); 

난 다음 예외를 받고 있어요 : 나는 그래서 전화를하기 위해 노력하고있어 때 java.lang.SecurityException: Admin ComponentInfo{com.hssoft.deviceadmintest/com.hssoft.deviceadmintest.DeviceAdmin} does not own the device

그래서 내가 장치 관리자를하지만 난 장치 소유자 아니에요. 내가 뭘 잘못하고 있니, 누가 도와 줄 수 있니?

매니페스트 파일 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.hssoft.deviceadmintest"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name="com.hssoft.deviceadmintest.DeviceAdmin" 
      android:permission="android.permission.BIND_DEVICE_ADMIN"> 
      <meta-data android:name="android.app.device_admin" 
         android:resource="@xml/device_admin" /> 
      <intent-filter> 
       <action android:name="android.app.action.PROFILE_PROVISIONING_COMPLETE"/> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

XML/device_admin.xml : 여기 내 전체 응용 프로그램 코드

<?xml version="1.0" encoding="utf-8"?> 
<device-admin> 
    <uses-policies> 
     <limit-password/> 
     <watch-login/> 
     <reset-password/> 
     <force-lock/> 
     <wipe-data/> 
     <expire-password/> 
     <encrypted-storage/> 
     <disable-camera/> 
    </uses-policies> 
</device-admin> 

DeviceAdmin.java :

package com.hssoft.deviceadmintest; 

import android.app.admin.DeviceAdminReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class DeviceAdmin extends DeviceAdminReceiver { 

    @Override 
    public void onEnabled(Context context, Intent intent) { 
     super.onEnabled(context, intent); 
     Log.i("Device Admin: ", "Enabled"); 
    } 

    @Override 
    public String onDisableRequested(Context context, Intent intent) { 
     return "Admin disable requested"; 
    } 

    @Override 
    public void onDisabled(Context context, Intent intent) { 
     super.onDisabled(context, intent); 
     Log.i("Device Admin: ", "Disabled"); 
    } 

    @Override 
    public void onPasswordChanged(Context context, Intent intent) { 
     super.onPasswordChanged(context, intent); 
     Log.i("Device Admin: ", "Password changed"); 
    } 
} 

MainActivity.java :

+0

아무도이 질문에 도움을 줄 수 있습니까? –

답변

1

응용 프로그램은 당신이 원하는 장치 소유자가 루트 액세스 권한이있는 경우

adb shell dpm set-device-owner com.hssoft.deviceadmintest/.DeviceAdmin 

this 기사가 많이 도움이 될 것을 달성하기 위해이 명령을 실행할 수 있습니다, 행동 할 수있다.

+0

내 장치에 루트 액세스 권한이 없습니다. 주된 문제입니다. –

+0

루트로 전환 하시겠습니까? 아니면 루트를 모르십니까? –

+1

장치를 루트하는 방법을 알고 있습니다. 하지만 내 상황에서 나는 루트를 사용할 수 없다. –

관련 문제