2013-10-02 4 views
0

전화 잠금 장치에서이 으로 작업하고 있습니다. 내 Samsung Tab 2에서 잘 작동합니다.하지만 Nexus 2에서 동일한 코드를 실행할 때 작동하지 않습니다. 아래에 몇 가지 코드를 게시했습니다. 로그에 "DeviceAdminSample" "Admin enable FAILED!"이 기록됩니다. 어떤 도움을 주시면 감사하겠습니다 !! Nexus에 대한 제한 사항이 있습니까?일부 장치에서 deviceManger.lockNow()가 작동하지 않습니다.

onCreate() 
{ 
deviceManger = (DevicePolicyManager)getSystemService( 
        Context.DEVICE_POLICY_SERVICE); 
       activityManager = (ActivityManager)getSystemService( 
        Context.ACTIVITY_SERVICE); 
       compName = new ComponentName(this, MyAdmin.class); 
} 

private void EnableSetting() { 
     // TODO Auto-generated method stub 
     Intent intent = new Intent(DevicePolicyManager 
       .ACTION_ADD_DEVICE_ADMIN); 
         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, 
           compName); 
         intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, 
           "Additional text explaining why this needs to be added."); 
         startActivityForResult(intent, RESULT_ENABLE); 
    } 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) { 
      case RESULT_ENABLE: 
       if (resultCode == Activity.RESULT_OK) { 
        Log.i("DeviceAdminSample", "Admin enabled!"); 
       } else { 
        Log.i("DeviceAdminSample", "Admin enable FAILED!"); 
       } 

     } 

감사합니다. 주요 활동

public class LockerTest extends Activity { 
    protected static final int REQUEST_ENABLE = 0; 
    DevicePolicyManager devicePolicyManager; 
    ComponentName adminComponent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button = (Button) findViewById(R.id.btn); 
     button.setOnClickListener(btnListener); 

    } 

    Button.OnClickListener btnListener = new Button.OnClickListener() { 
     public void onClick(View v) { 
      adminComponent = new ComponentName(LockerTest.this, Darclass.class); 
      devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 

      if (!devicePolicyManager.isAdminActive(adminComponent)) { 

       Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
       intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, adminComponent); 
       startActivityForResult(intent, REQUEST_ENABLE); 
      } else { 
       devicePolicyManager.lockNow(); 
      } 

     } 
    }; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (REQUEST_ENABLE == requestCode) { 
      super.onActivityResult(requestCode, resultCode, data); 
     } 
    } 
} 

에 대한

답변

3

코드는 새로운 클래스를 생성 - Darclass - 코드

import android.app.admin.DeviceAdminReceiver; 

public class Darclass extends DeviceAdminReceiver{ 

} 

'입술'에 폴더 'XML'을 만듭니다. 그런 다음 'xml'폴더에 my_admin.xml 파일을 만듭니다. my_admin.xml에 대한 코드. 마지막으로 당신의 AndroidManifest.xml

<receiver 
      android:name=".Darclass" 
      android:permission="android.permission.BIND_DEVICE_ADMIN" > 
      <meta-data 
       android:name="android.app.device_admin" 
       android:resource="@xml/my_admin" /> 

      <intent-filter> 
       <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
      </intent-filter> 
     </receiver> 

노호 주어진 수신기를 추가 한 후 및

<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> 
    <uses-policies> 
     <limit-password /> 
     <watch-login /> 
     <reset-password /> 
     <force-lock /> 
     <wipe-data /> 
    </uses-policies> 
</device-admin> 

전에이 수신기를 추가 참고 그것은 당신의 장치에서 작동합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 같은 코드를 사용하고있다. 그러나 그것의 보여주는'@Override에 로그는 무효 onActivityResult (int requestCode, int resultCode, 의도 데이터) { if (REQUEST_ENABLE == requestCode) { super.onActivityResult (requestCode, resultCode, data); } } '..이'else' 조건을 수행하고 있습니다. 내 'onActivityResult'를 확인하십시오. –

1

동일한 문제가있었습니다. 내 ... 블록이 AndroidManifest.xml의 내 블록 외부에 있었기 때문입니다. 여기에 표시된대로 블록을 이동하면 완벽하게 작동했습니다.

 <activity 
      android:name=".Main" 
      android:label="@string/app_name" 
      android:screenOrientation="landscape" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name="MyDeviceAdminReceiver" 
      android:permission="android.permission.BIND_DEVICE_ADMIN"> 
      <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_xml" /> 
      <intent-filter> 
       <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
       <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLE_REQUESTED" /> 
       <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLED" /> 
      </intent-filter> 
     </receiver>