2011-10-21 10 views
1

私はアンドロイドで新しいです、私は携帯電話をロックしたいと思います。そこで、私はDevice Adminのドキュメントを読んでいます。私のコードはこのように見えるようにしてください。私はそれは私がAndroidデバイス管理が動作しません

私のmanifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name=".MainLauncher"android:label="@string/app_name"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
<activity android:name=".Controller"android:label="@string/app_name"> 
</activity> 

<activity android:name=".DeviceAdminSample$Controller"android:label="@string/activity_sample_device_admin"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.SAMPLE_CODE" /> 
</intent-filter> 

</activity> 

<receiver android:name=".DeviceAdminSample"android:label="@string/sample_device_admin"android:description="@string/sample_device_admin_description"android:permission="android.permission.BIND_DEVICE_ADMIN"> 
<meta-data android:name="android.app.device_admin"android:resource="@xml/device_admin_sample" /> 
<intent-filter> 
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
</intent-filter> 
</receiver> 

</application> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
</manifest> 

マイコード

public class DeviceAdminSample extends DeviceAdminReceiver { 

public static class Controller extends Activity { 
      static final int RESULT_ENABLE = 1; 

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

     mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
     mAM = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
     mDeviceAdminSample = new ComponentName(Controller.this, DeviceAdminSample.class); 

     mEnableButton = (Button)this.findViewById(R.id.button1); 
     mEnableButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
       intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, 
         mDeviceAdminSample); 
       intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, 
         "Additional text explaining why this needs to be added."); 
       startActivityForResult(intent, RESULT_ENABLE); 
      } 
     }); 

     mDisableButton = (Button)this.findViewById(R.id.button2); 
     mDisableButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       mDPM.removeActiveAdmin(mDeviceAdminSample); 
       updateButtonStates(); 
      } 
     }); 

     mForceLockButton = (Button)this.findViewById(R.id.button3); 
     mForceLockButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       Log.i("                           In","In the forc lock button"); 
       if (mAM.isUserAMonkey()) { 
        AlertDialog.Builder builder = new AlertDialog.Builder(Controller.this); 
        builder.setMessage("You can't lock my screen because you are a monkey!"); 
        builder.setPositiveButton("I admit defeat", null); 
        builder.show(); 
        return; 
       } 
       boolean active = mDPM.isAdminActive(mDeviceAdminSample); 
       if (active) { 
       v mDPM.lockNow(); 
       } 
      } 
     }); 
    } 
    void updateButtonStates() { 
     boolean active = mDPM.isAdminActive(mDeviceAdminSample); 
     if (active) { 
      mForceLockButton.setEnabled(true); 
     } else { 
      mForceLockButton.setEnabled(false); 
     } 
    } 
} 
} 

私の他の操作を行い、それに定義されている場合でも、それは私のマニフェストにそれに気づくように見えるdoes notの示唆アクティビティ

package com.examples; 


public class MainLauncher extends Activity { 


@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.mainlauncher); 

Button btnLock = (Button)this.findViewById(R.id.button22); 
btnLock.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
     KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 

     lock.reenableKeyguard(); 

    } 
}); 

Button btnDevice = (Button)this.findViewById(R.id.button11); 
btnDevice.setOnClickListener(new OnClickListener() { 

    public void onClick(View arg0) { 
    try{      
     Intent openScreen = new Intent(); 
     openScreen.setClass(MainLauncher.this, DeviceAdminSample.class); 
     startActivity(openScreen); 
    } 
     catch(Exception e) 
     {Log.i("DeviceAdmin button",String.valueOf(e));} 
    } 
}); 
} 


} 
+0

ここにコメントアウトされたコードを貼り付けないでください。あなたのユーザーを「猿」と呼んではいけません。(時には少し太く見えるかもしれませんが)いくつか敬意を表します:-) – fredley

+0

これに従ってください[リンク] [1]デバイスを開発するために管理者のApp [1]:http://stackoverflow.com/questions/13450986/device-administrative-android-app-implementation –

+1

@TomMedleyモンキー・モードは、ツールでありますアプリをテストするOPはユーザーのためのものではありませんでした。 http://developer.android.com/tools/help/monkey.htmlをご覧ください。 – Sundeep

答えて

1

あなたは "device_admin_sample.xml"という "xml"フォルダの下にリソースを追加しましたか?これは、デバイス管理者が作業するための「強制ロック」を実行するために必要な権限を持ちます。

関連する問題